簡體   English   中英

GridView:捕獲和使用二進制DataKey

[英]GridView: Capturing and Usng Binary DataKey

我有一個GridView,它是根據一些DropDown列表中指定的值從數據庫中填充的。 我可以使用GridView將新行插入數據庫,但是在更新現有行時遇到問題。

我知道要更新數據庫中的一行,我在GridView上設置了一個DataKeyName,捕獲了所選行的DataKey值,並將其作為參數傳遞給SQL過程。

  1. 設置數據鍵

這是我的基本GridView設置(我刪除了格式相關的代碼)。

<asp:GridView id="Application_GridView" runat="server"
         DataKeyNames="appln_OID"
         ShowFooter="True"
         OnRowEditing="Application_GridView_RowEditing"
         OnRowUpdating="Application_GridView_RowUpdating"
         OnRowCancelingEdit="Application_GridView_OnRowCancelingEdit"
         AutoGenerateColumns="false"
  1. 捕獲所選行的DataKey值

這就是我遇到的問題-我的DataKeyName appln_OID擁有二進制值。 我看過一些示例,其中DataKey是INT或字符串,例如:

int intforumid = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Values[0]); 

要么

string val = (string)this.grid.DataKeys[rowIndex]["myKey"];

但找不到如何捕獲二進制值。

根據https://msdn.microsoft.com/zh-cn/library/cc716729(v=vs.110).aspx ,它應該是Byte [],所以我嘗試了

GridViewRow row = ((GridView)sender).Rows[e.RowIndex];
string applnkey = Application_GridView.DataKeyNames[row.RowIndex];
Byte appln_oid = Convert.ToByte(Application_GridView.DataKeys[row.RowIndex].Value);

出現錯誤: 無法將類型為“ System.Byte []”的對象轉換為類型為“ System.IConvertible”。

請幫助我了解我在嘗試獲取二進制DataKeyName值時做錯了什么!

錯誤消息:

無法將類型為“ System.Byte []”的對象轉換為類型為“ System.IConvertible”的對象

似乎暗示基礎列實際上是字節數組,而不是字節。 如果是這種情況,可以嘗試:

 byte[] appln_oid = (byte [])Application_GridView.DataKeys[row.RowIndex].Value;

如果仍然無法解決問題,您可以嘗試:

string info = Application_GridView.DataKeys[row.RowIndex].Value.GetType().ToString();

通過調試器運行此代碼,並在運行該行代碼后讓我們知道“ info”中的內容。 這將使我們知道字段的數據類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM