DevExpress:获取当前所选行的实体ID

时间:2012-08-06 07:43:52

标签: c# asp.net devexpress

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

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

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

想法?

2 个答案:

答案 0 :(得分: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();
}       

答案 1 :(得分: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]);
            }
        }
相关问题