如何在按钮单击时找到嵌套到ASPXGridview中的控件

问题描述 投票:1回答:2

我的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>

asp.net devexpress aspxgridview
2个回答
0
投票

康尼,

ASPxGridView内置了回调功能,因此我建议使用该方法,因为它更容易,它可以为您提供更好的用户体验。您正在使用的find方法需要visiblerowindex。 看看这个code central示例,看看如何从服务器获取数据: How to bind the detail GridView to data based on the end-user input


0
投票

如果您在扩展ASPxGridview时需要这些过程,则应使用DetailRowExpandedChanged事件。

当您展开或折叠ASPxGridview时,此事件有效。

Mehul's实际上对于这种情况非常好。之后,如果您仍有问题,可以在Devexpress Support提出您的问题。他们真的很有帮助,也很快。

© www.soinside.com 2019 - 2024. All rights reserved.