2011-08-16 76 views
0

我在GridView中有一個命令字段,就像它應該那樣工作。當我選擇它時,該行是高光的。但是,我需要將此字段轉換爲模板,所以我可以給它一個ID,以便在使用AJAX Mobal控件時可以參考。我這樣做了,我可以用我的Ajax控件引用它,但是,現在這個字段不會選擇Gridview中的行? Ajax控件需要Select值來提取數據。所以我認爲我的問題是,我如何使用這個命令字段作爲模板,並讓它選擇行?我希望我正確地解釋我的問題。
這是我將它轉換爲模板時的代碼片段。 謝謝!如何讓Gridview模板字段選擇數據行?

<asp:GridView ID="GridView3" runat="server" AllowPaging="True" AutoGenerateColumns="False" CellPadding="3" DataKeyNames="Contact_ID" DataSourceID="SqlDataSource2" ForeColor="#333333" GridLines="None" PageSize="6"> 
     <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
      <Columns> 
       <asp:TemplateField ShowHeader="False"> 
        <ItemTemplate> 
         <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Select" Text="Edit"></asp:LinkButton> 
         <asp:ModalPopupExtender ID="ModalPopupExtender2" runat="server" TargetControlID="LinkButton1" PopupControlID="DetailsView1" BackgroundCssClass="modalBackground"></asp:ModalPopupExtender> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:BoundField DataField="Contact_ID" HeaderText="Contact_ID" InsertVisible="False" ReadOnly="True" SortExpression="Contact_ID" Visible="False" /> 
       <asp:BoundField DataField="Contact_Assigned_Username" HeaderText="Username" SortExpression="Contact_Assigned_Username" /> 
       <asp:BoundField DataField="Contact_First_Name" HeaderText="First Name" SortExpression="Contact_First_Name" /> 
       <asp:BoundField DataField="Contact_Last_Name" HeaderText="Last Name" SortExpression="Contact_Last_Name" /> 
       <asp:BoundField DataField="Contact_Email_Address" HeaderText="Email Address" SortExpression="Contact_Email_Address" /> 
       <asp:BoundField DataField="Contact_Cell_Phone" HeaderText="Cell Phone" SortExpression="Contact_Cell_Phone" /> 
       <asp:CheckBoxField DataField="Contact_Administrator" HeaderText="Admin" SortExpression="Contact_Administrator" /> 
       <asp:CheckBoxField DataField="Contact_LineStat_Triggers_Email" HeaderText="Email Triggers" SortExpression="Contact_LineStat_Triggers_Email" /> 
       <asp:CheckBoxField DataField="Contact_LineStat_Triggers_Text" HeaderText="Text Triggers" SortExpression="Contact_LineStat_Triggers_Text" /> 
       <asp:CheckBoxField DataField="Contact_Web_Portal" HeaderText="Web Access" SortExpression="Contact_Web_Portal" /> 
       <asp:BoundField DataField="Contact_Customer_ID" HeaderText="Contact_Customer_ID" SortExpression="Contact_Customer_ID" Visible="False" /> 
       </Columns> 
     <EditRowStyle BackColor="#999999" /> 
     <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
     <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> 
     <SortedAscendingCellStyle BackColor="#E9E7E2" /> 
     <SortedAscendingHeaderStyle BackColor="#506C8C" /> 
     <SortedDescendingCellStyle BackColor="#FFFDF8" /> 
     <SortedDescendingHeaderStyle BackColor="#6F8DAE" /> 
    </asp:GridView> 
+0

請作出更多努力,來格式化你的代碼,以便它的可讀性下一次的。 –

+0

會做。謝謝 – John

回答

2

在RowDataBound事件,嘗試這樣的事情:

protected void GridView3_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    LinkButton btn = (LinkButton)e.Row.FindControl("LinkButton1"); 
    btn.OnClientClick = Page.ClientScript.GetPostBackEventReference(GridView3, "Select$" + e.Row.RowIndex.ToString())); 
} 
+0

謝謝你的幫助。我把它放在vb.net代碼後面嗎? – John

+0

在ASPX中分配OnRowDataBound事件處理程序,並使用此代碼處理後面代碼中的事件。在這種情況下,VB語法應該相當類似。 –

+0

我還沒弄明白,但我非常感謝你的幫助! – John

相關問題