『壹』 急急:GridView怎麼根據行數,獲取該行的資料庫ID
直接將ID綁定在LinkButton的CommandArgument屬性上,點擊按鈕的時候獲取下就可以了,為什麼要那麼麻煩顯示在頁面上呢...
『貳』 GridView獲取行數據
你怎麼用這個按鈕呢 不用其他的呢
你可以換成這個按鈕LinkButton 然後添加RowCommand事件 代碼如下
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:LinkButton ID="lbtnDelete" runat="server" Text="刪除" CommandArgument= '<%#Eval("RegisterID") %>' CommandName="Delete" OnClientClick="return confirm('是否刪除?');"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
protected void DataGridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
SqlParameter[] param =
{
new SqlParameter("@p_RegisterID",e.CommandArgument.ToString()),
new SqlParameter("@v_Error",null)
};
AccessHelper.ExecuteStoreProce("Admin_DeleteRegister", param);
GridViewBind();
}
『叄』 gridview怎麼獲得該行的資料庫id
先進入到模板編輯,對linkbutton的CommandArgument屬性進行綁定,綁定到數據的id屬性上。
最後在gridview的RowCommand事件中:
e.CommandArgument 就可以去到Id了,注意用的時候轉型。
如果有多個linkbutton,或者用了gridview自帶的刪除、修改等,要給你自己的這個linkbutton添加一個CommandName,在RowCommand事件中,先判斷e.CommandName是不是你設置的CommandName。
不知道這么解釋能不能明白。
『肆』 GridView1_RowCommand()中如何獲取當前行
在GridView里已經設置了LinkButton為事件處理按鈕,將通過以下方法獲取索引
protectedvoidgv_Company_RowCommand(objectsender,GridViewCommandEventArgse){
if(e.CommandName=="QianRu")
{
//取ID的值方法一
GridViewRowdrv=((GridViewRow)(((LinkButton)(e.CommandSource)).Parent.Parent));//此得出的值是表示那行被選中的索引值
infid=Convert.ToInt32(GridView1.DataKeys[drv.RowIndex].Value);//此獲取的值為GridView中綁定資料庫中的主鍵值
//取ID的值方法二
GridViewRowdrv=((GridViewRow)(((LinkButton)(e.CommandSource)).Parent.Parent));//此得出的值是表示那行被選中的索引值
//此獲取的值為GridView中綁定資料庫中的主鍵值,取值方法是選中的行中的第一列的值,drv.RowIndex取得是選中行的索引
intid=Convert.ToInt32(GridView1.Rows[drv.RowIndex].Cells[0].Text);
//取ID的值方法三
//因為在客戶端中就已經將LinkButton的CommandArgument與主鍵Id給綁定了所以在此可以直接用e.CommandArgument得出主鍵ID的值
intid=Convert.ToInt32(e.CommandArgument.ToString());
}
}
『伍』 如何獲取gridview中顯示的數據
而GridView中卻不是如此,就算數據源有表結構,只要沒有行記錄,就無法顯示標題。 我用了如下幾種方法來顯示,供大家參考一下: 1.使用最簡單的,當返回的數據為null時,沒有表結構,那麼先獲取對應的表結構,可以從資料庫中獲取,也可以臨時組合,如: DataTable dt = new DataTable("column"); dt.Columns.Add(ID, typeof(System.Int32)); dt.Columns.Add(Name, typeof(System.String)); 如果返回的數據源有表結構,只是沒有行記錄,就不用做上面這步了。 然後使用DataRow dr = dt.NewRow(); dt.Rows.Add(dr); 然後再綁定到GridView,這樣就可以顯示標題了。 這種方法簡單,但是有些問題,如果列表中有其他控制項,如Select命令,那麼顯示出來空行連Select也顯示出來了,這樣看上去會讓用戶誤認為是有一條記錄。當然,可以在RowDataBound中判斷一下狀態,是否清除掉所有控制項。 2.使用EmptyDataText 屬性來提示用戶沒有記錄,但是這樣無法顯示標題。 當綁定到 GridView 控制項的數據源不包含任何記錄時,該控制項中顯示空數據行。使用 EmptyDataText 屬性指定將在空數據行中顯示的文本。 3.使用EmptyDataTemplate屬性。裡面可以包含控制項和html標記。 如果同時設置了 EmptyDataText 和 EmptyDataTemplate 屬性,則 EmptyDataTemplate 屬性優先。 4.CreateChildControls(IEnumerable, bool) 方法: 此方法是根據數據源和相關的設置來創建需要顯示的控制項,主要是一個表格,此返回創建的控制項數, 如果數據源中沒有數據,GridView 將根據 EmptyDataTemplate 和 EmptyDataText 兩個屬性來顯示 信息,如果這兩個屬性都沒有設置,GridView 將不顯示任務的內容。 在 DataGrid 中,如果數據源沒有數據,將也會顯示一個表頭,GridView 不顯示表頭了,對於有些 用戶來說,可能有點不習慣。 如果需要在沒有數據的時候也要顯示表示,可以重寫此方法,在此方法,通過 CreateColumns 方法 獲取到需要顯示的列,在調用 CreateRow 方法創建一行,在調用 IntializeRow 方法來初始化創建 的行,最後在把行添加到表格里,這里需要說明的一點是,如果 GridView 沒有顯示任何的東西,