0

ASP.NET と C# を使用してグリッドビューを設計しています。グリッドビューには、2 つのバインドされたフィールド (NAME と CODE) と 1 つのテンプレート ドロップダウンリスト (PAY) フィールドがあります。

Gridview は、NAME、CODE、PAY を返すデータベース DB1 を使用して設定されます。期待どおりにこれらの値をフェッチし、グリッドビューの NAME フィールドと CODE フィールドに入力することができます。

                 <asp:BoundField DataField="NAME" HeaderText="NAME" 
                SortExpression="NAME" />
            <asp:BoundField DataField="CODE" HeaderText="CODE" SortExpression="CODE" />
            <asp:TemplateField HeaderText="PAY" SortExpression="PAY"> 
                <ItemTemplate> 
                    <asp:DropDownList ID="DropDownList1" runat="server" DataTextField="CODE" DataValueField="CODE" 
                    OnSelectedIndexChanged="DropDownList_SelectedIndexChanged" AutoPostBack="True" AppendDataBoundItems="true">
                        <asp:ListItem Text="Choose New Value"></asp:ListItem>   
                    </asp:DropDownList> 
                </ItemTemplate> 
            </asp:TemplateField> 

テンプレート Dropdownlist の可能な値のリストは、別の DataSource DB2 からフェッチされたデータを使用してバインドされます。これらの値を取得して、ドロップダウンリストに正常に入力できます。

私の要件は、グリッドビューのデータベース DB1 クエリによって返される PAY フィールドを、最初にドロップダウンのデフォルト値として設定する必要があることです。

この点で私を助けてください。

ありがとう

4

1 に答える 1

0

GridView1_RowDataBound イベントを使用してこれを処理できます

    void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");

            if (ddl != null)
            {

                ListItem li = ddl.Items.FindByText(DataBinder.Eval(e.Row.DataItem, "CODE").ToString());

                if (li != null)
                    li.Selected = true;

            }


        }
    }
于 2013-11-08T09:40:23.813 に答える