AspxGridView中的AspxComboBox

时间:2012-12-07 07:39:48

标签: c# asp.net devexpress aspxgridview aspxcombobox

我一直在努力为我的问题找到一个简单的例子或指导。基本上,我有一个数据集。该表有三列,

  • 文件名称(字符串)
  • 文件所有者(字符串)
  • Permission(int)

我想将此DataTable绑定到AspxGridView。但是,我希望将最后一列绑定到AspxComboBox,以便:

  • 如果Permission = 1,则将ComboBox与项目A
  • 绑定
  • 如果Permission = 2,则将ComboBox与项目A和B绑定
  • 如果Permission = 3,则将ComboBox与项目A,B和C
  • 绑定

我怎样才能做到这一点?我发现的很多样本都谈到了AspxGridView处于编辑模式。这里的要点是我实际上并没有编辑网格。我想做的就是在ComboBox上进行回发更改以执行某些操作。

2 个答案:

答案 0 :(得分:1)

只需通过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;
    }

答案 1 :(得分:0)

网格显示(非编辑)模式下的可编辑组合框:

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

ASPxEdit.AutoPostBack
GridViewDataColumn.DataItemTemplate