【问题标题】:DevExpress: Get Entity ID of currently selected rowDevExpress:获取当前选定行的实体 ID
【发布时间】:2012-08-06 07:43:51
【问题描述】:

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

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

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

想法?

【问题讨论】:

    标签: c# asp.net devexpress


    【解决方案1】:

    您可以使用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();
    }       
    

    【讨论】:

      【解决方案2】:

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

      <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]);
                  }
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 2014-02-02
        • 1970-01-01
        • 1970-01-01
        • 2012-09-27
        • 2022-01-14
        • 1970-01-01
        相关资源
        最近更新 更多