Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#从gridview asp net中的dropdownlist中获取所选值_C#_Gridview_Drop Down Menu_Selectedvalue - Fatal编程技术网

C#从gridview asp net中的dropdownlist中获取所选值

C#从gridview asp net中的dropdownlist中获取所选值,c#,gridview,drop-down-menu,selectedvalue,C#,Gridview,Drop Down Menu,Selectedvalue,当gridview中的dropdownlist的值发生更改时,如何更改文本框的值 在页面加载时,文本框显示所选的值,但当我更改dropdownlist的选择时,文本框值不会更改 代码如下 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns = "false"> <Columns> <asp:TemplateField HeaderText="Entry">

当gridview中的dropdownlist的值发生更改时,如何更改文本框的值

在页面加载时,文本框显示所选的值,但当我更改dropdownlist的选择时,文本框值不会更改

代码如下

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns = "false">
    <Columns>
        <asp:TemplateField HeaderText="Entry">
            <ItemTemplate>
                <%# Container.DataItemIndex + 1 %>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Duty">
            <ItemTemplate>
                <asp:DropDownList ID="duty" runat="server" OnLoad = "ddl1_load" OnSelectedIndexChanged="duty_SelectedIndexChanged" autopostback="true" EnableViewState="true"></asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
protected void ddl1_load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DataTable dt = new DataTable();
        Duty dy = new Duty();
        dt = dy.getdutyid(Convert.ToInt32(dropcontractid.SelectedValue));
        DropDownList ddl = (DropDownList)sender;
        ddl.DataSource = dt;
        ddl.DataTextField = "dutyid";
        ddl.DataValueField = "dutyid";
        ddl.DataBind();
        TextBox1.Text = ddl.SelectedValue;
    }
}

您需要使用
SelectedIndexChanged
处理程序来显示所选值:

标记:


您应该考虑改用数据绑定。您可以将textbox.Text绑定到selecteditem.value,这将确保正确更新

我使用
GridView中的
下拉列表时遇到类似问题。我的解决方案是调整下拉列表的
onLoad
,这样它就不会在每次回发邮件时重新写入
DropDownList
。这样,如果那里有东西,它就不会重新填充

protected void dropDownLoad(object sender, EventArgs e)
{
    DropDownList dropDown = sender as DropDownList;
    if (dropDown.SelectedValue == null || dropDown.SelectedValue == "")
    { 
        // Your Code to populate table
    }
}

这种情况在我身上发生过一次,然后我像这样编码。。。但是我没有使用onLoad属性,告诉我这是否有效

 <asp:TemplateField HeaderText="duty" SortExpression="duty">
                                       <EditItemTemplate>
                                      <asp:TextBox ID="duty" runat="server" Text='<%# Bind("duty_Name") %>'></asp:TextBox>
                                    </EditItemTemplate>
                                      <ItemTemplate>
                                           <asp:Label ID="lblduty" runat="server" Text='<%# Eval("duty_Name") %>' />
                                        <asp:DropDownList ID="ddlduty" runat="server" CssClass="dropdownlist" 
                                          OnLoad = "ddl1_load" OnSelectedIndexChanged="duty_SelectedIndexChanged" Visible = "false" 
                                           >
                                        </asp:DropDownList>
                                    </ItemTemplate>


                                        <HeaderStyle Width="5%" />
                                        <ItemStyle HorizontalAlign="Center" />
                                    </asp:TemplateField>


您好,谢谢您的回复,但现在我无法在文本框中显示任何文本…编辑答案,在SelectedIndexChanged中放置一个断点,然后查看下拉列表中的值。我只能在回发后获取值,从断点中,值始终是第一个选择。如果我选择第二个选项,它不会进入文本框。我已经更新了代码,它在添加回发后工作,但在我向gridview添加新行后,dropdownlist变为空。。。。你好,谢谢你的回复。但是我对这个很陌生,我该怎么做??
protected void dropDownLoad(object sender, EventArgs e)
{
    DropDownList dropDown = sender as DropDownList;
    if (dropDown.SelectedValue == null || dropDown.SelectedValue == "")
    { 
        // Your Code to populate table
    }
}
 <asp:TemplateField HeaderText="duty" SortExpression="duty">
                                       <EditItemTemplate>
                                      <asp:TextBox ID="duty" runat="server" Text='<%# Bind("duty_Name") %>'></asp:TextBox>
                                    </EditItemTemplate>
                                      <ItemTemplate>
                                           <asp:Label ID="lblduty" runat="server" Text='<%# Eval("duty_Name") %>' />
                                        <asp:DropDownList ID="ddlduty" runat="server" CssClass="dropdownlist" 
                                          OnLoad = "ddl1_load" OnSelectedIndexChanged="duty_SelectedIndexChanged" Visible = "false" 
                                           >
                                        </asp:DropDownList>
                                    </ItemTemplate>


                                        <HeaderStyle Width="5%" />
                                        <ItemStyle HorizontalAlign="Center" />
                                    </asp:TemplateField>