[英]GridView: Capturing and Usng Binary DataKey
我有一個GridView,它是根據一些DropDown列表中指定的值從數據庫中填充的。 我可以使用GridView將新行插入數據庫,但是在更新現有行時遇到問題。
我知道要更新數據庫中的一行,我在GridView上設置了一個DataKeyName,捕獲了所選行的DataKey值,並將其作為參數傳遞給SQL過程。
這是我的基本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"
這就是我遇到的問題-我的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.