0

我有一个 ASPxGridView 并且在 EditForm 中,当用户单击一个按钮时,我有一个弹出表单。我需要获取当前选定实体/行的 ID,以便我可以查询数据库并根据该 ID 在弹出窗口中填充下拉列表。我怎么能得到那个?我知道一些事件,你可以这样做:

protected void myGrid_OnRowUpdating(object sender, ASPxDataUpdatingEventArgs e)
        {
            Guid entityId = (Guid)e.Keys[0];

所以我想用SelectionChanged事件来尝试,但事件参数只有 type EventArgs,所以我不能使用上面的..

想法?

4

2 回答 2

0

您可以使用该HtmlRowCreated事件来绑定下拉列表的内容,如下所示。

protected void myGrid_HtmlRowCreated(object sender, ASPxGridViewTableRowEventArgs e)
{
    if (e.RowType != GridViewRowType.EditForm)
        return;

    var grid = sender as ASPxGridView;
    if (grid == null) 
        return;

    var row = (sender as ASPxGridView).GetRow(e.VisibleIndex) as MyEntity;
    var ddlMyDropDown = grid.FindEditFormTemplateControl("ddlMyDropDown") as ASPxComboBox;

    ddlMyDropDown.DataSource = GetDataForMyDropdown(); // Your Business Logic
    ddlMyDropDown.DataBind();
}       
于 2012-08-07T01:12:40.473 回答
0

我最终做了一些客户端的事情。首先,我添加了这一列:

<dx:GridViewCommandColumn ShowSelectCheckbox="True" VisibleIndex="0" Width="40">
                <HeaderTemplate>
                    <dx:ASPxCheckBox ID="SelectAllCheckBox" runat="server" ToolTip="Select/Unselect all rows on the page"
                        ClientSideEvents-CheckedChanged="function(s, e) { gridView.SelectAllRowsOnPage(s.GetChecked()); }" />
                </HeaderTemplate>
            </dx:GridViewCommandColumn>

然后我也添加了这个(到同一个网格):

<ClientSideEvents SelectionChanged="grid_SelectionChanged" />

最后,javascript:

var selected = [];

        function grid_SelectionChanged(s) {
            s.GetSelectedFieldValues("ID", GetSelectedFieldValuesCallback);
        }

        function GetSelectedFieldValuesCallback(values) {
            selected = [];
            for (var i = 0; i < values.length; i++) {
                selected.push(values[i]);
            }
        }
于 2012-08-20T23:50:34.913 回答