我在ASP中有一个gridview
,每行包含template Fields
,select
和edit
个链接,并且包含{{1}的页脚}链接。
每行有两个delete
,比方说:insert
和dropdownlists
,当我更改Category
的内容时,sub-category
会自动显示相应的内容。
我试过写一个category DropDownList
处理程序,但我不知道如何继续。 任何想法? (请记住我已经完成了所有rowDataBound()代码以填充下拉列表)
换句话说,如何填充除row_databound()之外的下拉列表
代码:
sub-category DropDownList
我在 GridViewRowEventArgs
中找到下拉列表类别 在selectedIndexChanged处理程序中 ,如何找到DropDownList? ,因为
onSelectedIndexChanged
无效
答案 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>