<div>
<dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False"
ClientInstanceName="ASPxGridView1" DataSourceID="LinqServerModeDataSource1"
KeyFieldName="ProductID"
oncelleditorinitialize="ASPxGridView1_CellEditorInitialize"
onrowdeleting="ASPxGridView1_RowDeleting"
onrowinserting="ASPxGridView1_RowInserting"
onrowupdating="ASPxGridView1_RowUpdating">
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0">
<EditButton Visible="True">
</EditButton>
<NewButton Visible="True">
</NewButton>
<DeleteButton Visible="True">
</DeleteButton>
</dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn Caption="ProductID" FieldName="ProductID"
VisibleIndex="1">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption="ProductName" FieldName="ProductName"
VisibleIndex="2">
</dx:GridViewDataTextColumn>
<dx:GridViewDataComboBoxColumn Caption="CategoryID" FieldName="CategoryID"
VisibleIndex="3">
<PropertiesComboBox DataSourceID="LinqServerModeDataSource2"
TextField="CategoryName" ValueField="CategoryID" ValueType="System.Int32">
</PropertiesComboBox>
</dx:GridViewDataComboBoxColumn>
</Columns>
</dx:ASPxGridView>
</div>
<dx:LinqServerModeDataSource ID="LinqServerModeDataSource1" runat="server"
onselecting="LinqServerModeDataSource1_Selecting" />
<dx:LinqServerModeDataSource ID="LinqServerModeDataSource2" runat="server"
onselecting="LinqServerModeDataSource2_Selecting" />
C # синтаксис:
protected void Page_Load(object sender, EventArgs e)
{
}
protected void LinqServerModeDataSource1_Selecting(object sender, DevExpress.Data.Linq.LinqServerModeDataSourceSelectEventArgs e)
{
NorthWindDataContext db = new NorthWindDataContext();
var r = from p in db.Products
select p;
e.QueryableSource = r;
}
protected void ASPxGridView1_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
}
protected void ASPxGridView1_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
}
protected void ASPxGridView1_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
}
//protected void ASPxGridView1_CellEditorInitialize(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewEditorEventArgs e)
//{
//}
protected void ASPxGridView1_CellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e)
{
if (!ASPxGridView1.IsEditing || e.Column.FieldName != "CategoryID") return;
ASPxComboBox combo = e.Editor as ASPxComboBox;
if (!(e.KeyValue == DBNull.Value || e.KeyValue == null)) //return;
{
object val = ASPxGridView1.GetRowValuesByKeyValue(e.KeyValue, "CategoryID");
if (val == DBNull.Value) return;
Int16 BrokerId = (Int16)val;
FillCityCombo(combo, BrokerId);
}
combo.Callback += new CallbackEventHandlerBase(cmbBranch_OnCallback);
}
protected void FillCityCombo(ASPxComboBox cmb, Int16 BrokerId)
{
NorthWindDataContext db = new NorthWindDataContext();
var r = from p in db.Categories
where (p.CategoryID == BrokerId)
select p;
cmb.Items.Clear();
cmb.DataSourceID = "";
cmb.DataSource = r;
cmb.DataBind();
}
private void cmbBranch_OnCallback(object source, CallbackEventArgsBase e)
{
FillCityCombo(source as ASPxComboBox, Convert.ToInt16(e.Parameter));
}
protected void LinqServerModeDataSource2_Selecting(object sender, DevExpress.Data.Linq.LinqServerModeDataSourceSelectEventArgs e)
{
NorthWindDataContext db = new NorthWindDataContext();
var r = from p in db.Categories
select p;
e.QueryableSource = r;
}
Запустите код, покажите мне сообщение об ошибке Указанный метод не поддерживается.
Я использую базу данных NorthWind. Я хочу показать информацию о таблице Product в AspxGridview.CategoryID - это один из столбцов таблицы Product. Я хочу показать Categories таблицу в этом столбце, я хочу показать CategoryName из таблицы категорий. Как?
Почему отображается ошибка. Как решить эту проблему. Нажмите на поле команды gridview iхочу получить CategoryID на основе CategoryName.