Как найти элемент управления, вложенный в ASPXGridview по нажатию кнопки - PullRequest
1 голос
/ 23 августа 2011

У меня есть текстовое поле и кнопка внутри моего ASPXGridview, DetailRow. Поэтому, когда он развернут, мне нужно набрать текст, нажать кнопку и на стороне сервера, чтобы получить значение из текстового поля.

Вот мой код. Проблема где-то на обратной передаче Я теряю текстовое значение. Таким образом, текстовое поле пусто

 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>

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

Если вы хотите использовать этот процесс при расширении ASPxGridview, вам следует использовать событие DetailRowExpandedChanged.

Это событие работает, когда вы расширяете или сверните ваш ASPxGridview.

Пример Мехула очень хорош для этой ситуации. После этого, если у вас все еще есть проблема, вы можете задать свой вопрос в Devexpress Support . Они действительно полезны и быстры.

0 голосов
/ 24 августа 2011

Conny,

ASPxGridView имеет встроенные функции обратного вызова, поэтому я рекомендую использовать этот подход, так как он проще и дает вам лучший пользовательский опыт.Метод поиска, который вы используете, требует visiblerowindex.Взгляните на пример code central , чтобы узнать, как получить данные с сервера: Как связать подробный GridView с данными на основе ввода конечного пользователя

...