2009-07-08 112 views
1

我們有很多gridviews,我們通過一些中間件來填充ADABAS數據源的數據,但不幸的是,我們回收了大量的stringBuilder數組,這些數組我們變成了數據表集作爲gridview的數據源,然後綁定。gridview databinder.eval問題

這是令人費解的,但我在一個情況下,我需要能夠更新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中的某個地方提取那些列名稱。

該信息是否可用在gridview中?

回答

2

讓人驚訝。您將需要將假數據源列名稱與列值存儲在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> 

這是醜陋的,但列名總是會提供給你 - 不管他們可能是什麼。祝你好運。

+0

感謝兄弟。自那以後 - 因爲我不得不使用它來開始,似乎是合理的,我將不得不這樣做。 再次感謝。 – aape 2009-07-09 13:03:51