Gridview控件绑定下拉列表

本文关键字:下拉列表 绑定 控件 Gridview | 更新日期: 2023-09-27 18:28:37

请帮我。我的页面上有一个GridView控件,其中包含2个下拉列表(大学和学院)。大学受制于page_load事件,而大学则依赖于Uninversity.selectedValue事件。我有一个添加按钮,它将新行添加到网格中。

问题是当有超过1行时。我不知道在onselectedIndexChanged事件上应该绑定哪个学院。它继续绑定第一排的学院。

这是我迄今为止在SelectedIndexChanged方法中所做的

    protected void drpUniversityName_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRowEventArgs e1 = (GridViewRowEventArgs)e; // Gives me a casting error on this line 
        DropDownList drpUniversityName = (DropDownList)(e1.Row.FindControl("drpUniversityName"));
        DropDownList drpCollegeName = (DropDownList)(e1.Row.FindControl("drpCollegeName"));
        bindColleges(drpUniversityName,drpCollegeName);
    } 

我需要一些方法来获得目前的大学和学院。

Gridview控件绑定下拉列表

<asp:GridView ID="GridView1" runat="server" >
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:DropDownList ID="ddlUniversity" runat="server" AutoPostBack="True" 
                            onselectedindexchanged="ddlUniversity_SelectedIndexChanged">
                            <asp:ListItem>1</asp:ListItem>
                            <asp:ListItem>2</asp:ListItem>
                            <asp:ListItem>3</asp:ListItem>
                        </asp:DropDownList>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:DropDownList ID="ddlCollege" runat="server">
                        </asp:DropDownList>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

这是c#代码:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            GridView_DataBind();
    }
    private void GridView_DataBind()
    {
        string[] datasource = { "1", "2", "3" };
        GridView1.DataSource = datasource;
        GridView1.DataBind();
    }
    protected void ddlUniversity_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow currentRow = (GridViewRow)((Control)sender).NamingContainer;
        //your code here
    }