【问题标题】:Set Values for other columns in gridview based on selected value of dropdownlist inside gridview(edit mode) in ASP.Net根据 ASP.Net 中 gridview(编辑模式)中下拉列表的选定值设置 gridview 中其他列的值
【发布时间】:2011-10-03 06:17:01
【问题描述】:

我有带有员工姓名、员工代码、职务的 gridview。我正在使用 rowdatabound 事件中的值填充员工姓名下拉列表。在编辑模式中,在员工姓名下拉列表中选择值时,EmpCode 和 Designation 应相应更改。 empCode 和 Designation 标签控件位于模板字段中。我为员工姓名下拉列表编写了 selectionchanged 事件,

ddlEmp.SelectedIndexChanged += new EventHandler(grd_ddlEmp_SelectedIndexChanged);

但我不知道如何更改 gridview 中特定行内的 Emp Code 和 Designation 值。

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    DropDownListSelectedIndexChanged 事件中做这些事情

    1. 首先找到行。
    2. 然后访问控件并进行相应更改。

    伪代码

    protected void grd_ddlEmp_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridView row = ((DropDownList)sender).NamingContainer as GridViewRow;
        Label Designation = row.FindControl("id of the designation label") as Label;
        Designation.Text = "new Designation Name";
    }
    

    【讨论】:

      【解决方案2】:

      在SelectedIndexChanged函数中,找到下拉框的选中值

        DropDownList ddl = (GridView1.Rows[GridView1.SelectedIndex].FindControl("DropDownList1") AS DropDownList);
        var selectedVal = ddl.SelectedValue;
      

      执行一些代码来确定 Emp Code 和 Desgination 然后填充相关标签(或其他控件):

      Label lbl = GridView1.Rows[GridView1.SelectedIndex].FindControl("Label1") as Label;
      

      为标签赋值。

      【讨论】:

        【解决方案3】:

        您需要将您的网格视图放在 UpdatePanel 中,并在 SelectedIndexChanged 事件后面的代码中执行此操作,就像我在下面的数据列表中所做的那样:

        <asp:DataList ID="dlstPassengers" runat="server" OnItemDataBound="dlstPassengers_ItemDataBound"
         RepeatDirection="Horizontal" RepeatColumns="2" Width="100%">
         <ItemTemplate>
               <div class="form-linebg" style="line-height: 32px;">
                    <asp:DropDownList ID="ddlCountry" AutoPostBack="true"  OnSelectedIndexChanged="ddlCountry_SelectedIndexChanged"
        CssClass="select-3" Style="width: 145px; margin-bottom: 9px;" runat="server">
        </asp:DropDownList>
        <br />
        <asp:DropDownList ID="ddlCity" CssClass="select-3" Style="width: 145px; margin-bottom: 10px;"
        runat="server">
        </asp:DropDownList>
        </div>
        </ItemTemplate>
        </asp:DataList>
        

        在后面的代码中:

        protected void ddlCountry_SelectedIndexChanged(object sender, EventArgs e)
                    {
                        DropDownList ddlCountry = (DropDownList)sender;
                        DropDownList ddlCity = (DropDownList)((DropDownList)sender).Parent.FindControl("ddlCity");
                        BindCity(ddlCity, ddlCountry.SelectedValue);
                    }
        
            private void BindCity(DropDownList ddlCity, string countryCode)
                    {
            // Binding code of city based selected country
            }
        

        您需要在下拉菜单的 SelectedIndexChanged 事件上设置 EmpCode 和 Designation 列,方法是在后面的代码中找到控件。

        【讨论】:

        • 我只能获取下拉列表的值,我无法使用来自发件人的 Parent.FindControl 访问 gridview 中的任何其他列。 Naveen 的解决方案奏效了!谢谢你的回答。
        【解决方案4】:

        在您的下拉菜单中使用 AutoPostBack="true"

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多