سؤال

لدي GridView مع حذف وأزرار التحرير تبدو وكأنها

<asp:GridView ID="grdTrackedItems" runat="server" AutoGenerateColumns="False" Width="330px"
            BorderStyle="None" OnRowDataBound="OnRowDataBoundTrackedItems" OnRowDeleting="OnRowDeletingTrackedItems">
            <Columns>
              <asp:TemplateField HeaderText="Name">
                <ItemTemplate>
                  <asp:Label ID="lblItem" runat="server" Text='<%# Eval("Item") %>' />
                </ItemTemplate>
              </asp:TemplateField>
              <asp:TemplateField>
                <ItemTemplate>
                  <asp:ImageButton ID="imgDelete" runat="server" ImageUrl="~/Resources/Images/Delete.png"
                    Height="12" Width="12" ToolTip="Delete" CommandName="Delete" />
                </ItemTemplate>
                <ItemStyle Width="22px" />
              </asp:TemplateField>
              <asp:TemplateField>
                <ItemTemplate>
                  <asp:ImageButton ID="imgEdit" runat="server" ImageUrl="~/Resources/Images/Edit.png"
                    Height="12" Width="12" ToolTip="Edit" />
                </ItemTemplate>
                <ItemStyle Width="22px" />
              </asp:TemplateField>
            </Columns>
          </asp:GridView>

لدي مربع نص وحفظ الزر في أسفل الصفحة. أريد عرض اسم العنصر في مربع النص عند النقر فوق الزر "تحرير" من GridView. كيف يمكنني أن أفعل هذا؟

هل كانت مفيدة؟

المحلول

قم بتوفير معالج لحدث ROWEDITING، ثم قم بتحديث مربع النص الخاص بك في هذا المعالج.

<asp:GridView ID="grdTrackedItems" runat="server" 
             AutoGenerateColumns="False" Width="330px"
            ...
             OnRowEditing="EditRecord">
            <Columns>


protected void EditRecord(object sender, GridViewEditEventArgs e)
{
    Label lbl = (Label)grdTrackedItems.Rows[e.NewEditIndex].Cells[0].FindControl("lblItem");


    MyTextBox.Text = lbl.text;
}

نصائح أخرى

داخل زر التحرير انقر معالج يمكنك الوصول إلى الصف الحالي على النحو التالي:

protected void Button1_Click1(object sender, EventArgs e)
{
    GridViewRow row = ((ImageButton)sender).Parent.Parent as GridViewRow;
    // Do some thing with this row
}

حصلت على الحل من نهر الأزرق إجابه.

أضف Datakeynames = "العنصر" إلى GridView وداخل زر التحرير انقر معالج

     protected void OnClickEdit( object sender, EventArgs e )
    {
        GridViewRow row = ( (ImageButton) sender ).Parent.Parent as GridViewRow;
        txtName.Text =  grdTrackedItems.DataKeys[row.RowIndex].Value.ToString();
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top