我们可以添加多种单元格类型到 C1GridView。链接中的文档详细的阐述了C1GridView内置的单元格类型。在这些单元格类型中,C1TemplateField 可以通过定制来满足不同的用户需求。我们可以通过 C1TemplateField 下ItemTemplate 属性,在 Grid 加载时绑定数据源到 C1TemplateField。同时,我们可以通过 EditItemTemplate 属性作为 C1TemplateField 的编辑器。可以参考 “<wijmo:C1GridView ID="C1GridView1" runat="server" AutogenerateColumns="False" DataKeyNames="CustomerID" DataSourceID="AccessDataSource1" OnRowUpdating="C1GridView1_RowUpdating"> <Columns> <wijmo:C1BoundField DataField="CustomerID" HeaderText="CustomerID" ReadOnly="True" SortExpression="CustomerID"> </wijmo:C1BoundField> <wijmo:C1BoundField DataField="CustomerName" HeaderText="CustomerName" SortExpression="CustomerName"> </wijmo:C1BoundField> <wijmo:C1TemplateField HeaderText="Country"> <ItemTemplate> <span> <%# Eval("Country") %></span> </ItemTemplate> <EditItemTemplate> <asp:DropDownList ID="dlCountry" runat="server" DataSourceID="AccessDataSource2" DataTextField="Country" DataValueField="Country" SelectedValue='<%# Bind("Country") %>'> </asp:DropDownList> <asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/App_Data/C1NWind1.mdb" SelectCommand="SELECT * FROM [Countries]"></asp:AccessDataSource> </EditItemTemplate> </wijmo:C1TemplateField> <wijmo:C1CommandField ShowEditButton="True"> </wijmo:C1CommandField> </Columns> </wijmo:C1GridView> <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/C1NWind1.mdb" SelectCommand="SELECT * FROM [Customers]" > </asp:AccessDataSource>
下面,我们可以点击 Edit 按钮使 C1GridView 更新到编辑状态。我们可以看到 DropDownList 弹出,通过 DropDownList 我们可以选择目标项。截图:
在选择目标选项后,点击 Update 按钮完成更新,此时,我们需要通过 UpdateCommand 事件来更新数据源,实现代码如下:
protected void C1GridView1_RowUpdating(object sender, C1.Web.Wijmo.Controls.C1GridView.C1GridViewUpdateEventArgs e)
{
AccessDataSource1.UpdateCommand = "Update Customers Set CustomerName=@CustomerName, Country=@Country where CustomerID=@CustomerID";
AccessDataSource1.UpdateParameters.Add("CustomerID",e.Keys["CustomerID"].ToString());
AccessDataSource1.UpdateParameters.Add("CustomerName", e.NewValues["CustomerName"].ToString());
AccessDataSource1.UpdateParameters.Add("Country", e.NewValues["Country"].ToString());
AccessDataSource1.Update();
}
更详细信息请参考 Demo: