2012-08-08 43 views
0

您好我有一個GridView和一個文本框放置在Ajax更新面板中。如何在GridViewRowCommand事件的同一頁面上更新文本框的文本

<asp:UpdatePanel ID="UpdatePanelAdmissionDefaultSettings" runat="server"> 
<ContentTemplate> 
<asp:GridView ID="GridViewMeritDetails" runat="server" AutoGenerateColumns="False" 
     BackColor="White" BorderColor="#5C5C5C" BorderStyle="Solid" BorderWidth="1px" 
     CellPadding="4" ForeColor="Black" CssClass="MeritGridStyle" 
      onrowdatabound="GridViewMeritDetails_RowDataBound" 
      onrowcommand="GridViewMeritDetails_RowCommand"> 
<RowStyle BackColor="#F7F7DE" /> 
<Columns> 
<asp:BoundField HeaderText="Field Name" DataField="MeritField" /> 
<asp:BoundField HeaderText="Field ID" DataField="MeritFieldID" /> 
<asp:ButtonField CommandName="edit" HeaderText="Edit" Text="Edit" /> 
<asp:ButtonField CommandName="delete" HeaderText="Delete" Text="Delete" /> 
</Columns> 
<FooterStyle BackColor="#CCCC99" /> 
<PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
<SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 
<HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" /> 
<AlternatingRowStyle BackColor="White" /> 
</asp:GridView> 


<asp:TextBox ID="TextBoxMeritFieldName" runat="server"></asp:TextBox> 
</ContentTemplate> 
</asp:UpdatePanel> 

我的問題是,當我點擊GridView的編輯按鈕,我想在文本框中選定行中顯示在一個單元格的值:

源如下。我已經給出了代碼在GridView RowCommand事件中顯示它。但它不起作用。

這裏是後面的代碼:

protected void GridViewMeritDetails_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    int iRowIndex = Convert.ToInt32(e.CommandArgument); 
    if (e.CommandName == "edit") 
    { 
     TextBoxMeritFieldName.Enabled = true; 
     TextBoxMeritFieldName.Text = GridViewMeritDetails.Rows[iRowIndex].Cells[0].Text.Trim(); 
    } 
    else if (e.CommandName == "delete") 
    { 
     //Add code to delete merit field 
    } 
} 

當我調試,控制進入RowCommand併到達線

TextBoxMeritFieldName.Text = GridViewMeritDetails.Rows[iRowIndex].Cells[0].Text.Trim(); 

但文本不顯示在頁面上。我錯過了什麼?

回答

1

的UpdatePanel

的設置模式
<asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="UpdatePanelAdmissionDefaultSettings" runat="server" > 
+0

我嘗試這樣做。但它沒有幫助。感謝您付出努力幫助我。 – 2012-08-09 06:42:09

+0

使用UpdateMode =「有條件」而不是Mode,我已更正了我的答案。 – Adil 2012-08-09 13:01:23

0
<asp:UpdatePanel Mode="Conditional" ID="UpdatePanelAdmissionDefaultSettings" runat="server"> 
<ContentTemplate> 
    <asp:GridView ID="GridViewMeritDetails" runat="server" AutoGenerateColumns="False" 
    BackColor="White" BorderColor="#5C5C5C" BorderStyle="Solid" BorderWidth="1px" 
    CellPadding="4" ForeColor="Black" CssClass="MeritGridStyle" 
     onrowdatabound="GridViewMeritDetails_RowDataBound" 
     onrowcommand="GridViewMeritDetails_RowCommand"> 
    <RowStyle BackColor="#F7F7DE" /> 
     <Columns> 
      <asp:BoundField HeaderText="Field Name" DataField="MeritField" /> 
      <asp:BoundField HeaderText="Field ID" DataField="MeritFieldID" /> 
      <asp:ButtonField CommandName="edit" HeaderText="Edit" Text="Edit" /> 
      <asp:ButtonField CommandName="delete" HeaderText="Delete" Text="Delete" /> 
     </Columns> 
     <FooterStyle BackColor="#CCCC99" /> 
     <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
     <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" /> 
     <AlternatingRowStyle BackColor="White" /> 
    </asp:GridView> 


<asp:TextBox ID="TextBoxMeritFieldName" runat="server"></asp:TextBox> 
</ContentTemplate> 
</asp:UpdatePanel> 

設置更新面板

+0

它不會讓我的代碼工作。但我得到了我的答案,並感謝你試圖幫助我。 – 2012-08-09 06:43:04

+0

所以它是如何工作的 – 2012-08-09 08:13:01

+0

:AsyncPostBackTrigger的EventName屬性是可選的。如果未指定,則使用控件的DefaultEventAttribute屬性確定默認事件。我在這裏找到了 – 2012-08-13 13:29:15

0

感謝名單的一個屬性Mode="Conditional"的慷慨答覆。

我已經得到了答案。

我在UpdatePanelAdmissionDefaultSettings部添加以下代碼行現在

<asp:AsyncPostBackTrigger ControlID="GridViewMeritDetails" /> 

變得:

<asp:UpdatePanel Mode="Conditional" ID="UpdatePanelAdmissionDefaultSettings" runat="server"> 

<asp:TextBox ID="TextBoxMeritFieldName" runat="server"></asp:TextBox> 
</ContentTemplate> 
<Triggers> 
<asp:AsyncPostBackTrigger ControlID="GridViewMeritDetails" /> 
</Triggers> 
</asp:UpdatePanel> 

而且我得到的結果,因爲我需要的。早些時候,我的觸發器部分是這樣的:

<Triggers> 
<asp:AsyncPostBackTrigger ControlID="GridViewMeritDetails" EventName="RowCommand"/> 
</Triggers> 

我只是刪除了事件名稱屬性和現在的工作......

相關問題