[ASP.net][GridView](note)連動選取gridview某列後,觸發改變外部dropdownlist的被選取項目

摘要:[ASP.net]連動選取gridview某列後,觸發改變外部dropdownlist的被選取項目

若在gridview中,我有設定了只要按下「選取」後,該列中的每個格子的文字會自動填入我網頁上的每個textbox中,
但有個問題,

我gridview中的第二欄是部門,如有「管理部、會計部...」,
在gridviw外有個下拉式選單也有「管理部、會計部...」的選項,
我怎麼讓gridview被取後,外面的下拉式選單會自動對應到相同項目呢?
如讓gridview被取的第二欄裡的文字是「會計部」,postback後外面的下拉式選單同時
也跳到「會計部」呢?
下列語法可做到:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
   int i = Convert.ToInt32(GridView1 .SelectedIndex );
       
DropDownList_subject.SelectedValue = DropDownList_subject.Items.FindByText(GridView1.Rows[i].Cells[5].Text).Value;
//DropDownList1.SelectedValue = DropDownList1.Items.FindByText("你想要的字串").Value
        }

以上另可寫防呆的IF,點選gridview後若外部的下拉選單中找不到對應的項目,
就讓下拉選單維持預設項目:

 if (DropDownList_subject.Items.FindByText(GridView1.Rows[i].Cells[5].Text) == null)
        {
            DropDownList_subject.SelectedIndex = 0;
        }
        else
        {
            DropDownList_subject.SelectedValue = DropDownList_subject.Items.FindByText(GridView1.Rows[i].Cells[5].Text).Value;
        }

另有一段語法在網上查到的,先筆記下來或許未來會用得到:

※DropDownList要怎麼根據Text或Value改變他的選取值

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByText("text"));
DropDownList1.SelectedValue = "XXX";   // 如果只要根據Value選擇,直接這樣寫就好
 


DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByText("A003")); 


若是複選式的選單的話,如CheckBoxList,另一位網友提供了下列語法給我參考:

protected void Page_Load(object sender, EventArgs e)
    {

        string[] data = new string[] { "人事部", "會計部", "總務科" };
        foreach (string mydata in data)
        {
            CheckBoxList1.Items.FindByText(mydata).Selected = true;
        }
    }

再把迴圈的部分從Array改成GridView的欄位。

 
--
強烈建議購物網店或實體店家都必須使用關鍵字廣告or原生廣告來將Yahoo上與聯播網的廣大流量導至自己的網站!

●Yahoo關鍵字廣告/原生廣告
◆Yahoo廣告方案介紹 : https://goo.gl/5k8FHW
◆Yahoo廣告剖析與運用 : http://goo.gl/4xjUJD

 

​​