2009-10-06 2 views
1

У меня есть Gridview со значениями MachineGroupID, MachineGroupName, MachineGroupDesc ​​и так далее ..Получение значения ячейки после выбора строки

У меня есть команды удаления в GridView, когда я нажал предполагается удалить выбранную строку.

Теперь у меня есть код, который сообщает мне, какая строка выбрана.

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
     LinkButton btn = (LinkButton)sender; 
     GridViewRow row = (GridViewRow)btn.NamingContainer; 
     string machineID = (String)GridView1.SelectedValue; 
     if (row != null) 
     { 
      LinkButton LinkButton1 = (LinkButton)sender; 

      // Get reference to the row that hold the button 
      GridViewRow gvr = (GridViewRow)LinkButton1.NamingContainer; 

      // Get row index from the row 
      int rowIndex = gvr.RowIndex; 
      string str = rowIndex.ToString(); 
      //string str = GridView1.DataKeys[row.RowIndex].Value.ToString(); 
      RemoveData(str); //call the delete method 
     } 
} 

Я хочу, чтобы получить подарок MachineGroupID в строке, так что я могу передать это значение и удалить запись из базы данных и GridView?

Благодаря

+0

ПОЖАЛУЙСТА вам не нужно ставить BLOCKQUOTE – TheVillageIdiot

+0

извините ... не случится снова .. – user175084

ответ

2

TRY ЭТО .........

((Label)grd.Rows[e.RowIndex].Cells[0].FindControl("lblID")).Text 

ИЛИ лучшее RowCommand

protected void grdCountry_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    grd.DataKeys[0] // this will return the MachineGroupID 
} 
+0

спасибо ,,,, это работало .. – user175084

+0

Удивляюсь, после принятия, почему кто-то есть вниз, а не писать причину? –

+0

@MuhammadAkhtar, как это работает, если ваш идентификатор является ориентиром – rogue39nin

0

GridView имеет SelectedDataKey свойство, которое даст вам то, что вы хотите (убедитесь, что для свойства DataKeyNames свойства GridView установлено значение MachineGroupID)

0

Установите MachineGroupID как DataKeyName для сетки как DataKeyName="MachineGroupID" и получить его

GridView1.DataKeys[rowIndex].ToString() в соответствии с вашим кодом.

Другой путь установить значение MachineGroupID на скрытое в Gridview ItemTemplate и написать следующий код в коде в LinkButton1_Click события:

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
LinkButton btn = (LinkButton)sender; 
GridViewRow row = (GridViewRow)btn.NamingContainer; 
string machineID = (String)GridView1.SelectedValue; 
if (row != null) 
{ 
LinkButton LinkButton1 = (LinkButton)sender; 
// Get reference to the row that hold the button 
GridViewRow gvr = (GridViewRow)LinkButton1.NamingContainer; 
HiddenField hdn=(HiddenField)gvr.FindControl("hdn"); 
// get the value of MachineGroupID for the row. 
string mcgID= hdn.value; 

//--------- Write delete code here-------// 
} 
} 
0

Есть много способов сделать это - вот один

у меня есть изображение кнопки для удаления, но вы можете использовать LinkButton здесь

 <asp:TemplateField HeaderText="Delete" ItemStyle-HorizontalAlign="Center"> 
      <ItemTemplate> 
       <asp:ImageButton ImageUrl="~/Images/delete.gif" ID="btnDelete" OnClientClick='return confirm("Are you sure you want to delete this item?")' runat="server" OnCommand="DeleteRecord" CommandArgument='<%# Bind("MachineGroupId") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 

И код:

protected void DeleteRecord(object sender, CommandEventArgs e) 
{ 
    Guid id = new Guid((string)e.CommandArgument); 
    if (RemoveData(id)) 
    { 

    } 
} 
+0

это хорошо ... и я получаю значение machineGroupID в e.CommandArgument .. но он дает ошибку при передаче его в Guid id. ошибка msg: «Guid должен содержать 32 цифры с четырьмя тире (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)». Есть ли способ просто указать строку или значение int id? ?? – user175084

+0

Да, это был просто пример. Вам не нужно использовать Guid, если ваш идентификатор не является Guid. Если предполагается, что int использует int.Parse(), если он должен быть строкой, просто введите ее (string) – CRice

Смежные вопросы