![](/img/trans.png)
[英]Can i add new row to datagrid view with a button click in ASP.Net written VB.net
[英]Editing row of a datagrid in ASP.Net VB.Net
目前,我正在使用一段較早版本的DataGrid來允許用戶向表中輸入信息的代碼。 它已經具有添加和刪除按鈕。 當前,用戶將信息輸入到頁腳中的3個文本框中,其他行使用標簽顯示信息。
本質上,我要執行的操作是單擊用戶單擊“編輯”按鈕的行,然后將文本從此處移至頁腳(刪除顯示該行的行),以便用戶可以進行更改,然后單擊“確定”。再次點擊添加按鈕。 目前,我嘗試使用FindControls查找文本框並以這種方式設置文本,但它不喜歡它。 有任何想法嗎?
您如何使用FindControl? 它總是有助於發布您的代碼;)
您應該能夠在頁腳行上執行FindControl()
並獲得沒有問題的文本框。
GridViewRow row = GridView1.FooterRow;
TextBox txt1 = ((TextBox)row.FindControl,"TextBox1"));
本質上,我改變了最初的計划。 與其將文本從該行移至頁腳文本框並刪除該行,不如我使用EditCommandColumn來創建鏈接按鈕,如下所示
<asp:EditCommandColumn ButtonType="LinkButton" ItemStyle-ForeColor="Blue" EditText='[edit]' UpdateText='[update]' CancelText='[cancel]'></asp:EditCommandColumn>
我還必須將EditItemTemplate添加到每個列,每個列中都有一個文本框,然后將數據綁定到文本框,就像綁定到ItemTemplates中的標簽一樣。
然后,使用ItemCommand事件處理程序,在后面添加了一些代碼,以將EditItemIndex設置為正在編輯的行。
Private Sub GoodsList_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgdGoods.ItemCommand
Select Case e.CommandName
Case "Edit"
dgdGoods.EditItemIndex = e.Item.ItemIndex
Case "Cancel"
dgdGoods.EditItemIndex = -1
Case "Update"
dgdGoods.EditItemIndex = -1
'Update details here
然后,最后,將數據重新綁定到數據網格。 使用EditCommandColumn,它將自動從顯示“編輯”按鈕變為在正在編輯的行上顯示“更新”和“取消”按鈕。
需要澄清一些事情-您是指舊的.NET“ DataGrid”控件還是較新的“ GridView”控件。 另外,這是Web還是Winforms應用程序?
我的建議-
您是否嘗試通過處理GridView1_RowEditing事件以編程方式添加和設置TextBox控件?
要刪除已編輯的行,請從數據源中刪除該行,然后重新綁定網格。
list.Remove(itemToRemove);
GridView1.DataSource = list;
GridView1.DataBind();
然后,從itemToRemove中獲取數據,並將其用於以編程方式在頁腳中創建和設置文本框。
如果數據網格的第三列稱為“名稱”並包含名稱數據,則應創建並設置第三列的頁腳行TextBox值,如下所示-
GridView1.FooterRow.Cells[2].Controls.Add(new TextBox { ID = "tbName", Text = item.Name });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.