0

私は自分の問題の簡単な例やガイダンスを見つけるのに苦労してきました。基本的に、私は1つのデータセットを持っています。このテーブルには3つの列があります。

  • ドキュメント名(文字列)
  • ドキュメントの所有者(文字列)
  • 許可(int)

このDataTableをAspxGridViewにバインドしたいと思います。ただし、次のように、最後の列をAspxComboBoxにバインドする必要があります。

  • Permission = 1の場合、ComboBoxをアイテムAにバインドします
  • Permission = 2の場合、ComboBoxをアイテムAおよびBにバインドします
  • Permission = 3の場合、ComboBoxをアイテムA、B、およびCにバインドします

どうすればこれを達成できますか?私が見つけたサンプルの多くは、AspxGridViewが編集モードになっていることについて説明しています。ここでのポイントは、実際にはグリッドを編集していないということです。私がやりたいのは、ComboBoxの変更に対してポストバックを実行してアクションを実行することだけです。

4

2 に答える 2

0

dropdownListのSelectedValueプロパティを介してバインドするだけです。以下のサンプルを確認してください

Aspx
<asp:GridView ID="gvTest" runat="server" AutoGenerateColumns="False" 
    onrowdatabound="gvTest_RowDataBound">
<Columns>
    <asp:TemplateField HeaderText="Serial No."><ItemTemplate><%# Container.DataItemIndex+1 %></ItemTemplate></asp:TemplateField>
    <asp:TemplateField HeaderText="Fruits" ><ItemTemplate><asp:DropDownList runat="server" ID="ddlFruits" SelectedValue='<%# Bind("FruitID") %>'   >
        <asp:ListItem Value="1">Apples</asp:ListItem>
        <asp:ListItem Value="2">Pineapples</asp:ListItem>
        <asp:ListItem Value="3">Banana</asp:ListItem>
        </asp:DropDownList></ItemTemplate> </asp:TemplateField>
</Columns>
</asp:GridView>

C#

protected void Page_Load(object sender, EventArgs e)
    {   
        gvTest.DataSource = GetData();
        gvTest.DataBind();
    }

    private DataTable GetData()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("FruitID"));
        for (int i = 0; i < 3; i++)
        {
            DataRow dr=dt.NewRow();
            dr["FruitID"] = i + 1;
            dt.Rows.Add(dr);
        }
        return dt;
    }
于 2012-12-07T10:02:59.470 に答える
0

グリッド表示 (非編集) モードで編集可能なコンボ ボックス:

<dx:GridViewDataColumn>
    <DataItemTemplate>
        <dx:ASPxComboBox runat="server" AutoPostBack="True" ...></dx:ASPxComboBox>
    </DataItemTemplate>
</dx:GridViewDataColumn>

ASPxEdit.AutoPostBack
GridViewDataColumn.DataItemTemplate

于 2012-12-07T09:51:18.873 に答える