我们有许多网格视图,我们通过一些中间件使用来自ADABAS数据源的数据进行填充,不幸的是,这些中间件返回了大量的stringBuilder数组,我们将这些数组转换为数据表,设置为网格视图的数据源,然后进行绑定。
这很复杂,但我所处的情况是,我需要能够更新网格视图(比方说,删除一行),而不需要返回到大型机、删除行并重新生成datatable,如果我们有Oracle数据源的话。
因此,我尝试在服务器端从网格视图中提取数据,构建datatable,删除给定行,然后将该datatable用作网格视图的数据源,然后重新绑定。
只要我知道网格视图的布局,我就可以逐个完成。但我们将在当前的项目中一遍又一遍地做这件事,我正在试图找出一种方法来抽象它,以便我可以将它用于任何我抛给它的网格视图。
我得到的问题是,网格视图中的大多数cols都是带有asp:labels的模板字段,其中的数据是用databinder.eval放入的:
<asp:TemplateField HeaderText="Code">
<ItemTemplate>
<asp:Label ID="lblCode" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "code")%>'></asp:Label></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Title" ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="lblTitle" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "title")%>'></asp:Label></ItemTemplate>
</asp:TemplateField>因此,在构建我的“伪”数据源时,我需要能够从网格视图中的某个位置提取这些列名。
该信息在网格视图中可用吗?
发布于 2009-07-08 23:25:57
啊呀。您将需要在GridView中存储假数据源列名称以及列值。一种建议是为每个伪数据源字段值添加一个HiddenField。在下面的示例中,显示标签中的代码(值)和HiddenField中代码映射的列(名称):
<asp:TemplateField HeaderText="Code"
<ItemTemplate>
<asp:Label ID="lblCode" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "code")%>'></asp:Label>
<asp:HiddenField ID="hfCode" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "codefield")%>'></asp:HiddenField>
</ItemTemplate>
</asp:TemplateField>它很难看,但是列名总是可以使用的--不管它们是什么。祝你好运。
https://stackoverflow.com/questions/1099257
复制相似问题