Как мы можем найти элемент управления в команде row grid view?

Как я могу найти элемент управления в команде строки сетки?

3

10 ответы

На самом деле в GridViewCommandEventArgs нет строки, поэтому вам нужно будет получить строку из контейнера именования источника команд

GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer);

то вы сможете использовать

TextBox myTextBox = row.FindControl("MyTextBoxId") as TextBox;

Надеюсь это поможет!

17
добавлено
Контроль не определен?
добавлено автор HQtunes.com, источник

если вы используете LinkButton

 LinkButton ctrl = e.CommandSource as LinkButton;
   if (ctrl != null)
    {
        GridViewRow row = ctrl.Parent.NamingContainer as GridViewRow;
        TextBox txtDescription = (TextBox)row.FindControl("txtDescription");
    }
2
добавлено
GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);

Label lblProdId = (Label)row.FindControl(“lblproductId”);
1
добавлено

Если u хочет найти элемент управления в команде row

controlname controlId=(controlname)e.FindControl("controlId"); 

Например, если u хочет найти lable с Id lbl , то используйте.

Label lbl = (Label)e.Row.FindControl("lbl");
0
добавлено

Если вы используете usercontrols в своем gridview itemtemplate, тогда ((Control) e.CommandSource) .NamingContainer может не вернуть ваш gridviewrow.

В этом случае я использовал следующий код для получения текущей строки:

var c = ((Control) e.CommandSource).NamingContainer;
while (c.GetType() != typeof(GridViewRow))
{
    c = c.Parent;
}
var currentRow = (GridViewRow) c;

Это некрасиво, но это работает.

0
добавлено

Вы можете использовать «CommandArgument» в своем элементе управления с «CommandName». Здесь 2 аргумента:


Затем в вашем коде вы можете получить аргументы:

string[] arg = e.CommandArgument.ToString().Split(';');
int index = Convert.ToInt16(arg[0]);
string idinterlocuteur = arg[1];

И теперь вы можете найти свои элементы управления:

CheckBox Check1 = GridView1.Rows[index].FindControl("MyCheckboxinrow") as CheckBox;
0
добавлено

            
                 
                DD-MM-YYYY
            
            
               <%#Eval("NextAttend") %>
            
            
        

        
            
                 <div class="btn-group">

                
                    
               
                    
                    </div>
            
            
                <div class="btn-group">
                
                    

                    </div>
            
            
        


 if (e.CommandName == "UpdateStat")
        {
            HiddenField IDHiddenField=(HiddenField)GridView1.Rows[Convert.ToInt32(e.CommandArgument)].FindControl("IDHiddenField");
            TextBox CurrentStatDesTextBox=(TextBox)GridView1.Rows[Convert.ToInt32(e.CommandArgument)].FindControl("CurrentStatDesTextBox");}
0
добавлено
Пожалуйста, предоставьте некоторую информацию/детали своим кодом.
добавлено автор jhhoff02, источник

GridViewRow gvr = (GridViewRow) ((контроль) e.CommandSource) .NamingContainer;             int rowIndex = gvr.RowIndex;

        string Cat_name = (GridView1.Rows[rowIndex].FindControl("TxtName") as TextBox).Text;
0
добавлено
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)    
{

GridViewRow gvr = (GridViewRow)((Control)e.CommandSource).NamingContainer;
int rowIndex = gvr.RowIndex;

string Cat_name = (GridView1.Rows[rowIndex].FindControl("TxtName") as TextBox).Text;

}
0
добавлено
 GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);                    
                    HiddenField hdMeasurementId = ((HiddenField)row.FindControl("hdMeasurementId"));
0
добавлено
Хотя этот фрагмент кода может решить проблему, мы предпочитаем ответы с некоторым объяснением, почему и как они работают.
добавлено автор Joshua Drake, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)