我認爲這對我來說很容易找出(或atl東在網上找到有人),但我遇到了問題。在gridview中訪問單元格值
我有下面的代碼創建我的GridView:在C#側
<asp:GridView runat="server" ID="ContactsGrid" AutoGenerateColumns="False" DataSourceID="LinqContact"
CellPadding="4" ForeColor="#333333" GridLines="None" OnRowDeleting="ContactsGridView_RowDeleting" >
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="IConact_ID" Visible="false" ReadOnly="true" />
<asp:BoundField DataField="cFirstName" HeaderText="First Name" ReadOnly="True" />
<asp:CommandField HeaderText="Delete" ShowDeleteButton="True" />
</Columns>
</asp:GridView>
<asp:LinqDataSource ID="LinqContact" runat="server" ContextTypeName="TIPS.App_Data.TIPSDataContext" onselecting="LinqContact_Selecting" >
</asp:LinqDataSource>
現在,我希望能夠拉從第一列中的值(它是隱藏的),並用它來刪除(具有onroedeleting事件)的特定記錄,但是我發現所有的方法都會導致null,如果我沒有LinqDatasource會發生什麼情況。
我已經試過(和其他擺真正似乎沒有是正確的,那麼未上市):
ContactsGrid.SelectedRow.Cells[0].Text;
ContactsGrid.Columns[0];
感謝您的幫助!
編輯:
好了,我發現,當你隱藏它使用網格你不能得到這個隱藏在列的值。我確實找到了解決辦法。如果您使用css來隱藏列,您仍然可以訪問該列。
<style type="text/css">
.hiddencol
{
display:none;
}
</style>
<asp:BoundField DataField="IContact_ID" ReadOnly="true" itemstyle-cssclass="hiddencol" />
我不認爲這是首選的.net方式。我找到了一個名爲datakeynames的參考,這似乎是正確的方法。接下來我將深入研究這些問題。
編輯#2:
我看到馬拉什和我都想出了隱藏領域的解決方案,但我想我找到了最好的一個(導致其簡單,內置)。
在gridview標籤中,您可以將datakeynames屬性設置爲您的列(就像我在隱藏列中存儲的主鍵),您也可以存儲多列。
<asp:GridView runat="server" ID="ContactsGrid" AutoGenerateColumns="False" DataSourceID="LinqContact" DataKeyNames="IContact_ID"
CellPadding="4" ForeColor="#333333" GridLines="None" OnRowDeleting="ContactsGridView_RowDeleting" >
然後你可以參考它:
ContactsGrid.DataKeys[e.RowIndex].Value;
嗯......這很有趣。你的方式工作,但只有當列可見。如果它標記爲不可見,則該值返回爲空白。其實它甚至沒有給我和隱藏的列上的錯誤,我的數據字段值列甚至不存在!只有我發現可見的人。 – Limey
檢查第二個解決方案 –
感謝您的幫助!你幫助我走上了正確的道路! – Limey