2011-08-23 1 views
1

내 ASPXGridview, DetailRow보기 안에 텍스트 상자와 단추가 있습니다. 그래서 확장되면 텍스트를 입력하고 버튼을 클릭하고 서버 측에서 텍스트 상자의 값을 가져와야합니다.단추를 클릭하면 ASPXGridview에 중첩 된 컨트롤을 찾는 방법

여기 내 코드입니다. 문제는 포스트 백에서 텍스트 값을 잃어 버리는 것입니다. 그래서 텍스트 상자에 ASPxGridView 그것은 쉽게로 그래서 내가 그 방법을 사용하는 것이 좋습니다 그것으로 내장 된 콜백을 가지고

protected void Button1_Click(object sender, EventArgs e) 
    { 

     ASPxGridView grid = EmailGridView; 

     for (int i = 0; i < grid.VisibleRowCount; i++) 
     { 
      var txtDescription = (ASPxMemo)grid.FindDetailRowTemplateControl(i, "txtDescription"); 

      if(txtDescription != null) 
      { 
       var text = txtDescription.Text; 
      } 
     } 
    } 

<dxwgv:ASPxGridView ID="EmailGridView" KeyFieldName="ThreadId" runat="server" AutoGenerateColumns="False" 
OnHtmlRowCreated="EmailGridView_HtmlRowCreated" SettingsDetail-AllowOnlyOneMasterRowExpanded="true" 
SettingsBehavior-ConfirmDelete="true" OnHtmlRowPrepared="EmailGridView_HtmlRowPrepared" 
OnRowDeleted="EmailGridView_RowDeleted"> 
<SettingsBehavior ConfirmDelete="True" /> 
<Columns> 
    <dxwgv:GridViewDataTextColumn Caption="ID" FieldName="Id" VisibleIndex="0"> 
    </dxwgv:GridViewDataTextColumn> 

    <dxwgv:GridViewCommandColumn VisibleIndex="5" Caption=" "> 
     <DeleteButton Visible="True"> 
     </DeleteButton> 
    </dxwgv:GridViewCommandColumn> 
</Columns> 
<SettingsDetail ShowDetailRow="true" /> 
<SettingsBehavior ConfirmDelete="True" /> 
<SettingsDetail AllowOnlyOneMasterRowExpanded="True" ShowDetailRow="True" /> 
<Templates> 
    <DetailRow> 
     <dxwgv:ASPxGridView ID="EmailSubGridView" Width="750px" OnBeforePerformDataSelect="EmailSubGridView_BeforePerformDataSelect" 
      runat="server" AutoGenerateColumns="False" 
      onhtmlrowcreated="EmailSubGridView_HtmlRowCreated"> 
      <Columns> 
       <dxwgv:GridViewDataTextColumn Caption="MessFrom" FieldName="MessFrom"> 
       </dxwgv:GridViewDataTextColumn> 
       <dxwgv:GridViewDataTextColumn Caption="Message" FieldName="Message"> 
       </dxwgv:GridViewDataTextColumn> 
       <dxwgv:GridViewDataTextColumn Caption="SendDtm" FieldName="SendDtm"> 
       </dxwgv:GridViewDataTextColumn> 
      </Columns> 
      <StylesEditors> 
       <ProgressBar Height="25px"> 
       </ProgressBar> 
      </StylesEditors> 
     </dxwgv:ASPxGridView> 


      <dx:ASPxMemo ID="txtDescription" runat="server" Width="170px" Height="71px"></dx:ASPxMemo> 

     <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Reply" /> 
    </DetailRow> 
</Templates> 

+0

어디에서 GridView에 데이터를 바인딩합니까? –

답변

0

을 당신이 당신의 ASPxGridview을 확대하고이 과정을 원한다면, 당신은 DetailRowExpandedChanged 이벤트를 사용해야합니다. 당신이또는붕괴 당신의 ASPxGridview을 확장

이 이벤트는 작동합니다.

Mehul's 예제는이 상황에서 실제로 매우 좋습니다. 그 후에도 문제가 계속되면 Devexpress Support에서 질문 할 수 있습니다. 그들은 정말로 도움이되고 빠릅니다.