2010-08-20 29 views
1

嗨我有這樣的gridview。gridview templatefield itemtemplate裏面控件的改變值

<asp:DropDownList ID="triggerDropDown" runat="server" AutoPostBack="true" onselectedindexchanged="triggerDropDown_SelectedIndexChanged"> 

<asp:GridView ID="myGridView" run="server"> 
    <Columns> 
      <asp:TemplateField HeaderText="Column 1"> 
       <ItemTemplate> 
        <asp:DropDownList ID="myDropDown1" runat="server" /> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="Column 2"> 
       <ItemTemplate> 
        <asp:DropDownList ID="myDropDown2" runat="server" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

現在,當我改變我的triggerDropDown我想也改變所有內部Column 1下拉式菜單中的我該怎麼辦呢?

protected void triggerDropDown_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    // what should I do here? 
} 

回答

0

其實我可以使用GridViewRow :)我只需要找到GridViewControl並得到它的Rows屬性這是一個GridViewRow現在我可以做每行的foreach。

foreach (GridViewRow gridViewRow in (this.FindControl("myGridView") as GridView).Rows) 
{ 
    // I can see all elements of my row here as if I am traversing on GridViewEvents 
} 
2

內您的活動方法,你應該訪問駐留在GridView的每一行內的DropDownList。這樣做可以將每個DropDownList綁定到任何你想要的數據。

此鏈接顯示你如何做到這一點:

http://www.velocityreviews.com/forums/t191319-need-help-with-accessing-a-control-within-a-template-field.html

基本上是:

  • 遍歷你的GridView的每一行;

  • 找到的東西,如DropDownList控件:

    DropDownList mddl = GridView.Rows[2].FindControl("myDropDown1");

  • 綁定新的數據MDDL。

+0

事實上,事件不是gridview的一部分,但在gridview之外。在我的情況下,gridview已經有界,並且gridview內的下拉列表也是有界的。我只是想重新綁定GridView中的下拉菜單,如果外部下拉更改。 – 2010-08-20 03:40:51

0

gridview很可能不是你想要的。更改行中包含的控件的值的方法通常是通過從gridview的ItemDataBound事件中使用e.Item.FindControl()獲取所需控件的句柄。

你的方法的問題是,你想要一個gridview(triggerDropDown)之外的控件與GridView的單行進行交互。您是否想要第一排,第一列,最後一列,第一列或第一列每個的網格中的項目?將觸發器下拉的目標放在gridview之外並直接處理它可能會更好。

如果您確實打算更改網格中某一行的項目,請考慮在GridView的ItemDataBound事件中這樣做,您會發現很多示例。

+0

不,不是一行,而是整行的一列。 – 2010-08-20 03:36:53

+0

@rob w:你的gridview中會有多於一行嗎?這將決定你必須選擇的潛在解決方案。 – Tahbaza 2010-08-20 16:05:43

+0

你可以檢查gridview的ItemDataBound事件中的e.rowindex屬性,用e.Item.FindControl引用所需的控制行,並直接通過控件名稱檢查觸發器dd的當前選定值,重新嘗試去做。 – Tahbaza 2010-08-21 02:20:51

相關問題