ASP Gridview下拉列表选择已更改,如何填充rowDataBound()以外的下拉列表

时间:2013-05-24 14:28:27

标签: c# asp.net

我在ASP中有一个gridview,每行包含template Fieldsselectedit个链接,并且包含{{1}的页脚}链接。

每行有两个delete,比方说:insertdropdownlists,当我更改Category的内容时,sub-category会自动显示相应的内容。

我试过写一个category DropDownList处理程序,但我不知道如何继续。 任何想法? (请记住我已经完成了所有rowDataBound()代码以填充下拉列表)

换句话说,如何填充除row_databound()之外的下拉列表

代码:

sub-category DropDownList

我在 GridViewRowEventArgs

中找到下拉列表类别 在selectedIndexChanged处理程序中

,如何找到DropDownList? ,因为                     onSelectedIndexChanged无效

3 个答案:

答案 0 :(得分:2)

听起来您希望使用在类别下拉列表中选择的值将数据绑定到子类别下拉列表。你可以这样做:

protected void ddlCategory_SelectedIndexChanged(object sender, EventArgs e)
{
    GridViewRow row = (GridViewRow)((DropDownList)sender).Parent.Parent;
    DropDownList ddlSubCategory = (DropDownList)row.FindControl("ddlSubCategory");
    ddlSubCategory.DataSource = //whatever you want to bind, e.g. based on the selected value, using((DropDownList)sender).SelectedValue;
    ddlSubCategory.DataBind();
}

如果我误解了你,请在评论中纠正我。

答案 1 :(得分:1)

FindControl不是递归的,并且在你到达控件所在级别之前,TableCell属性Cells属性中有许多GridViewRow控件,因此将其更改为某些内容这样会起作用:

TableCell cell = (TableCell)e.Row.FindControl("idOfMyCellIfItHasOne");
DropDownList ddlCategory = (DropDownList)cell.FindControl("ddlCategory");

或者,如果您的单元格/列没有ID和/或您知道表格中单元格的位置不会改变,您可以使用Cells属性上的索引器:

DropDownList ddlCategory = (DropDownList)e.Row.Cells[cellIndex].FindControl("ddlCategory");

答案 2 :(得分:0)

在您的下拉列表中使用 AutoPostBack =" true"

像那样:

 <asp:DropDownList ID="footer_id"  AutoPostBack="true" 
 OnSelectedIndexChanged="footer_id_SelectedIndexChanged" 
 runat="server"></asp:DropDownList>