Как получить значение из другого элемента управления внутри той же строки шаблона gridview программным путем [дублировать]

function clone(obj)
 { var clone = {};
   clone.prototype = obj.prototype;
   for (property in obj) clone[property] = obj[property];
   return clone;
 }
21
задан Peter Mortensen 7 March 2015 в 10:21
поделиться

5 ответов

Поместите commandName на страницу .aspx

 <asp:Button  ID="btnDelete" Text="Delete" runat="server" CssClass="CoolButtons" CommandName="DeleteData"/>

Подпишите rowCommand событие для сетки, и вы можете попробовать, как это,

protected void grdBillingdata_RowCommand(object sender, GridViewCommandEventArgs e)
{
        if (e.CommandName == "DeleteData")
        {
            GridViewRow row = (GridViewRow)(((Button)e.CommandSource).NamingContainer);
            HiddenField hdnDataId = (HiddenField)row.FindControl("hdnDataId");
         }
}
1
ответ дан analyticalpicasso 21 August 2018 в 04:44
поделиться

Есть ли какая-то конкретная причина, по которой вы хотели бы использовать ваши кнопки в шаблоне элемента. Вы можете в качестве альтернативы сделать это следующим образом, там, предоставив вам полную мощность редактирования строки сетки. Вам также предоставляется бонус проводки функции отмены и удаления.

Пометить

<asp:TemplateField HeaderText="Edit">
            <ItemTemplate>
   <asp:ImageButton ID="EditImageButton" runat="server" CommandName="Edit"
    ImageUrl="~/images/Edit.png" Style="height: 16px" ToolTip="Edit" 
    CausesValidation="False"  />

      </ItemTemplate>

         <EditItemTemplate>

                    <asp:LinkButton ID="btnUpdate" runat="server" CommandName="Update" 
                        Text="Update"  Visible="true" ImageUrl="~/images/saveHS.png" 
                        />
                   <asp:LinkButton ID="btnCancel" runat="server" CommandName="Cancel"   
                        ImageUrl="~/images/Edit_UndoHS.png"  />

                 <asp:LinkButton ID="btnDelete" runat="server" CommandName="Delete"   
                        ImageUrl="~/images/delete.png"  />

             </EditItemTemplate>


        <ControlStyle BackColor="Transparent" BorderStyle="None" />
               <FooterStyle HorizontalAlign="Center" />
           <ItemStyle HorizontalAlign="Center" />
       </asp:TemplateField>

Код за

 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{

    GridView1.EditIndex = e.NewEditIndex;
    GridView1.DataBind();

TextBox txtledName =   (TextBox) GridView1.Rows[e.NewEditIndex].FindControl("txtAccountName");

 //then do something with the retrieved textbox's text.

}
1
ответ дан ByronMcGrath 21 August 2018 в 04:44
поделиться
Кнопка
            <asp:Button  ID="btnEdit" Text="Edit" runat="server"  OnClick="btnEdit_Click" CssClass="CoolButtons"/>


protected void btnEdit_Click(object sender, EventArgs e)
{
       Button btnEdit = (Button)sender;
       GridViewRow Grow = (GridViewRow)btnEdit.NamingContainer;
      TextBox txtledName = (TextBox)Grow.FindControl("txtAccountName");
      HyperLink HplnkDr = (HyperLink)Grow.FindControl("HplnkDr");
      TextBox txtnarration = (TextBox)Grow.FindControl("txtnarration");
     //Get the gridview Row Details
}

и кнопка «То же, что и для удаления»

0
ответ дан Jeeva_G 21 August 2018 в 04:44
поделиться

Вы также можете использовать событие нажатия кнопки:

<asp:TemplateField>
    <ItemTemplate>
        <asp:Button ID="Button1" runat="server" Text="Button" 
                    OnClick="MyButtonClick" />
    </ItemTemplate>
</asp:TemplateField>
protected void MyButtonClick(object sender, System.EventArgs e)
{
    //Get the button that raised the event
    Button btn = (Button)sender;

    //Get the row that contains this button
    GridViewRow gvr = (GridViewRow)btn.NamingContainer;
} 

ИЛИ

Вы можете сделать это, чтобы получить данные:

 void CustomersGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
 {

    // If multiple ButtonField column fields are used, use the
    // CommandName property to determine which button was clicked.
    if(e.CommandName=="Select")
    {
      // Convert the row index stored in the CommandArgument
      // property to an Integer.
      int index = Convert.ToInt32(e.CommandArgument);    

      // Get the last name of the selected author from the appropriate
      // cell in the GridView control.
      GridViewRow selectedRow = CustomersGridView.Rows[index];
    }
}

и Button в gridview должны иметь такую ​​команду и обрабатывать событие rowcommand:

<asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSqlDataSource" 
        autogeneratecolumns="false"
        onrowcommand="CustomersGridView_RowCommand"
        runat="server">

        <columns>
          <asp:buttonfield buttontype="Button" 
            commandname="Select"
            headertext="Select Customer" 
            text="Select"/>
        </columns>
  </asp:gridview>

Проверить полный пример в MSDN

38
ответ дан KyleMit 21 August 2018 в 04:44
поделиться
  • 1
    thnx снова для быстрого ответа.I hv пробовал, что ... его показ ошибка ithis & quot; Недопустимый аргумент обратной передачи или обратного вызова. Проверка достоверности включена с использованием & lt; pages enableEventValidation = "true" / & gt; в конфигурации или & lt;% @ Page EnableEventValidation = & quot; true & quot; % & GT; на странице. В целях безопасности эта функция проверяет, что аргументы для событий обратной передачи или обратного вызова берутся из серверного элемента управления, который их первоначально визуализировал. Если данные действительны и ожидаются, используйте метод ClientScriptManager.RegisterForEventValidation, чтобы зарегистрировать данные обратной передачи или обратного вызова для проверки. & Quot; – Tamal Kanti Dey 10 January 2013 в 11:55
  • 2
    @TamalKantiDey - просто установите EnableEventValidation = & quot; false & quot; удалит эту ошибку – Pranay Rana 10 January 2013 в 11:56
  • 3
    где мне нужно установить этот атрибут EnableEventValidation? В сетке я не могу найти такой атрибут. – Tamal Kanti Dey 10 January 2013 в 12:03
  • 4
    на странице вверху в этом теге & quot; & lt;% @ Page & quot; – Pranay Rana 10 January 2013 в 12:07
  • 5
    thnx его работа, я имею в виду, ошибка не приходит. но это событие RowCommand не срабатывает. – Tamal Kanti Dey 10 January 2013 в 12:21
<ItemTemplate>
     <asp:Button ID="Button1" runat="server" Text="Button" 
            OnClick="MyButtonClick" />
</ItemTemplate>

и ваш метод

 protected void MyButtonClick(object sender, System.EventArgs e)
{
     //Get the button that raised the event
Button btn = (Button)sender;

    //Get the row that contains this button
GridViewRow gvr = (GridViewRow)btn.NamingContainer;
}
1
ответ дан LateshtClick.com 21 August 2018 в 04:44
поделиться
  • 1
    Это похоже на то же, что и в ответе Праная Раны. – breez 13 March 2017 в 11:46
Другие вопросы по тегам:

Похожие вопросы: