gridview databinder.eval问题

时间:2009-07-08 16:45:34

标签: asp.net vb.net

我们已经有了一个数字,我们正在与数据从ADABAS数据源通过一些中间件,不幸的是,让我们回大量的StringBuilder的阵列,我们变成一个DataTable填充GridView的,集作为数据源的gridview,然后绑定。

这是令人费解的,但我处于这样一种情况:我需要能够更新gridview(比如,删除一行),而不是回到主机,删除行,并重新生成数据表,就像我想的那样如果我们有Oracle数据源。

所以,我试图在服务器上一起破解一些东西,我从gridview中提取数据,构建数据表,删除给定的行,然后使用该数据表作为gridview的数据源,并重新绑定。

我可以根据具体情况来做,只要我知道gridview的布局。但是我们将在这个当前的项目中反复这样做,我正试图找出一种方法来抽象它,以便我可以将它用于任何gridview我抛出它。

我遇到的问题是gridview中的大多数cols都是带有asp:标签的模板字段,其中数据放在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>

因此,在构建我的'假'数据源时,我需要能够从gridview中的某个位置提取这些列名。

网格视图中是否提供了该信息?

1 个答案:

答案 0 :(得分:2)

让人惊讶。您将需要在GridView中存储伪数据源列名以及列值。一个建议是添加一个HiddenField以及每个伪数据源字段值。在下面的示例中,显示Label中的代码(值)和代码映射到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>

这很难看,但是你可以随时使用列名 - 无论它们是什么。祝你好运。