簡體   English   中英

在ASP.Net中編輯數據網格的行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.

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