3

グリッドビュー内のドロップダウンリストの値が変更されるたびに、テキストボックスの値を変更するにはどうすればよいですか?

ページの読み込み時に、テキスト ボックスに選択した値が表示されますが、ドロップダウン リストの選択を変更しても、テキスト ボックスの値は変更されません。

コードは以下のとおりです。

<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;
    }
}
4

4 に答える 4

3

SelectedIndexChanged選択した値を表示するには、ハンドラーを使用する必要があります。

マークアップ:

<asp:DropDownList ID="duty" runat="server" OnLoad="ddl1_load" OnSelectedIndexChanged="duty_SelectedIndexChanged"></asp:DropDownList>

分離コード:

protected void duty_SelectedIndexChanged(object sender, EventArgs e)
{
    GridViewRow gvr = (GridViewRow)(((Control)sender).NamingContainer);   
    DropDownList duty= (DropDownList) gvr.FindControl("duty");
    TextBox1.Text = duty.SelectedItem.Value;
}
于 2012-06-24T11:05:09.743 に答える
3

DropDownListsinを使用して同様の問題がありましたGridViewonLoad私の解決策は、ドロップダウンの を調整して、DropDownList投稿ごとに を書き直さないようにすることでした。このように、そこに何かがある場合、再入力されません。

protected void dropDownLoad(object sender, EventArgs e)
{
    DropDownList dropDown = sender as DropDownList;
    if (dropDown.SelectedValue == null || dropDown.SelectedValue == "")
    { 
        // Your Code to populate table
    }
}
于 2012-09-19T15:42:11.687 に答える
0

代わりにデータ バインディングの使用を検討する必要があります。textbox.Text を selecteditem.value にバインドできます。これにより、適切な更新が確実に行われます。

于 2012-06-24T11:06:22.060 に答える