DropDownLists в ASPxGridView - Показать сообщение. Указанный метод не поддерживается. - PullRequest
0 голосов
/ 31 июля 2010
<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.

1 Ответ

1 голос
/ 02 августа 2010

Метод Show message Specified не поддерживается. Ошибка может быть устранена, если для свойства LinqServerModeDataSource.EnableUpdate установлено значение true.Также вы можете прочитать об этой ошибке по адресу:

http://search.devexpress.com/?q=Specified+method+is+not+supported.&p=T4|P5|0&d=447

> Я использую базу данных NorthWind. Я хочу показать информацию о таблице продукта в AspxGridview.CategoryID - один из столбцовтаблицы продукта. Я хочу показать таблицу категорий в формировании по этому столбцу, я хочу показать CategoryName из таблицы категорий. Как?<< Создайте столбец GridViewDataComboBox для отображения таких данных.Свойства этого столбца позволяют установить связь между двумя полями: </p>

http://documentation.devexpress.com/#AspNet/clsDevExpressWebASPxGridViewGridViewDataComboBoxColumntopic

...