2012-08-06 56 views
0

我有一個ASPxGridView,並且在EditForm中,當suer單擊一個按鈕時,我有一個彈出窗體。我需要獲取當前所選實體/行的ID,以便我可以查詢數據庫並根據該ID填充彈出窗口中的下拉列表。我怎麼弄到的?我知道有一些事件,你可以這樣做:DevExpress:獲取當前選定行的實體ID

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

所以我想嘗試,與SelectionChanged事件,但事件的說法是隻EventArgs型的,所以我不能用上面..

想法?

回答

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