2013-08-26 2 views
0

У меня есть вид datagrid, и я хотел бы записать значение datakeyname в выбранной строке gridview. Но в этом случае один из моих столбцов (Название события) будет гиперссылкой, и когда эта ссылка будет нажата, она запустит selectedindexchanged и возьмет DataKeyName, который будет передан для заполнения формы. Вот мой код. В настоящее время мое поле гиперссылки не является «кликабельным». Нужно ли мне менять свой подход?Fire SelectionIndexChanged with AutoGenerateSelect «False»

<asp:GridView ID="gvEventDetails" CssClass="gvEvent" runat="server" DataKeyNames="Event_ID" 
       AutoGenerateColumns="false" OnSelectedIndexChanged="gvEventDetails_SelectedIndexChanged" >  
    <Columns>   
     <asp:TemplateField HeaderText="Event Title"> 
      <ItemTemplate>                      
       <asp:HyperLink ID="HyperLink1" Text='<%# Eval("Event_Title") %>' runat="server"></asp:HyperLink> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Client Name"> 
      <ItemTemplate> 
       <asp:Label ID="ClientName" runat="server" Text='<%# Eval("Name") %>'> 
       </asp:Label> 
      </ItemTemplate> 
      </asp:TemplateField> 

Метод:

protected void gvEventDetails_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string DataKey = gvEventDetails.SelectedValue.ToString(); 
    } 

ответ

1

Вместо гиперссылкой, попробуйте LinkButton с именем команды:

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:LinkButton runat="server" CommandName="Select" CommandArgument='<%# Eval("Event_ID") %>' Text='<%# Eval("Event_Title") %>' 
    ... 

Правило, что размещение назад с общими именами команд (Edit, Select , Удалить, Отменить и т. Д.) Правильно распознается движком событий.

0

Это то, что я в конечном итоге делает

protected void gvEventDetails_RowCommand(object sender, GridViewCommandEventArgs e) 
    {   
      string PK = (e.CommandArgument).ToString();      
    } 
      <asp:TemplateField HeaderText="Event Title"> 
       <ItemTemplate>                      
        <asp:LinkButton ID="HyperLink1" runat="server" Text='<%# Eval("Event_Title") %>' 
        CommandArgument='<%# Eval("Event_ID") %>' 
         ></asp:LinkButton> 
       </ItemTemplate> 
      </asp:TemplateField> 
Смежные вопросы