我有一个ASPxGridView,在EditForm中,当suer点击一个按钮时,我有一个弹出窗体。我需要获取当前所选实体/行的ID,以便我可以查询数据库并根据该ID在弹出窗口中填充下拉列表。我怎么能得到它?我知道有些事件,你可以这样做:
protected void myGrid_OnRowUpdating(object sender, ASPxDataUpdatingEventArgs e)
{
Guid entityId = (Guid)e.Keys[0];
所以我想尝试SelectionChanged
事件,但事件参数只有EventArgs
类型,所以我不能使用上面的..
想法?
答案 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]);
}
}