ASPxGridView и LinqServerModeDataSource, вставка строк с помощью хранимой процедуры - PullRequest
0 голосов
/ 07 июня 2011

У меня есть страница, использующая ASPxGridView, и для заполнения GridView я использую элемент управления LinqServerModeDataSource, который извлекает данные через представление SQL с сервера MS SQL.Пока все хорошо, но тут возникает проблема.

Я хочу вставить данные в базу данных, поэтому я создаю пользовательскую форму

<Templates>
    <EditForm>
        Company Name: <dx:ASPxTextBox ID="CompanyName" runat="server" />
        Company Mail: <dx:ASPxTextBox ID="Email" runat="server" />

        <dx:ASPxGridViewTemplateReplacement ID="UpdateButton" ReplacementType="EditFormUpdateButton" runat="server" />
        <dx:ASPxGridViewTemplateReplacement ID="CancelButton" ReplacementType="EditFormCancelButton" runat="server" />

    </EditForm>
</Templates>

Вот пример пользовательской формы

Example

Довольно простые вещи, в этом случае название компании указывается в одной таблице, а электронная почта - в другой.Все это обрабатывается путем вызова хранимой процедуры.Или это план.

Кто-нибудь знает, как это сделать?

Такое ощущение, что я пробовал все это, LinqServerModeDataSource1_Inserting, ASPxGridView1_RowInserting и т. Д., Но nooo.Вот один из неисправных кодов.И документация devexpress еще хуже, но мы не пойдем туда, это не очень удачное место.

protected void LinqServerModeDataSource1_Inserting(object sender, DevExpress.Data.Linq.LinqServerModeDataSourceEditEventArgs e)
{
    // Some magic to insert data here
    ASPxGridView1.CancelEdit();
}

Итак, любой совет или помощь очень важны.

Спасибо!

1 Ответ

1 голос
/ 07 июня 2011

«Я хочу вставить данные в базу данных, поэтому я создаю пользовательскую форму» ASPxGridView может сделать все это за вас, без необходимости создавать пользовательский шаблон хотя бы с sqldb. Если бы я определил команду удаления и / или изменилКоманда ниже для sqldatasource я уже мог удалить и редактировать информацию в gridview

  <dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" 
        ClientIDMode="AutoID" DataSourceID="SqlDataSource1">
        <Columns>
            <dx:GridViewCommandColumn VisibleIndex="0">
                <EditButton Visible="True">
                </EditButton>
                <NewButton Visible="True">
                </NewButton>
                <DeleteButton Visible="True">
                </DeleteButton>
            </dx:GridViewCommandColumn>
            <dx:GridViewDataTextColumn FieldName="Naam" VisibleIndex="0">
            </dx:GridViewDataTextColumn>
            <dx:GridViewDataTextColumn FieldName="Adres" VisibleIndex="1">
            </dx:GridViewDataTextColumn>
            <dx:GridViewDataTextColumn FieldName="Postcode" VisibleIndex="2">
            </dx:GridViewDataTextColumn>
            <dx:GridViewDataTextColumn FieldName="Plaats" VisibleIndex="3">
            </dx:GridViewDataTextColumn>
        </Columns>
    </dx:ASPxGridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
        SelectCommand="SELECT [Name], [Address], [Postcode], [City] FROM [Somewhere]">
    </asp:SqlDataSource>

Но вы можете, если вы действительно хотите использовать пользовательские вставки или удаления

protected void ASPxGridView4_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
    DataColumn[] esl = new DataColumn[] { dt.Columns["SQLWaarde"] };
    if (ds.Tables[0].PrimaryKey == null || ds.Tables[0].PrimaryKey == esl)
    {
        ds.Tables[0].PrimaryKey = new DataColumn[] { dt.Columns["SQLWaarde"] };
    }
    DataRow[] delRow = ds2.Tables[0].Select("IndWaardeType = '" + e.Values[1] + "' AND SQLWaarde = '" + e.Values[2] + "'");
    ds2.Tables[0].Rows.Remove(delRow[0] as DataRow);

    e.Cancel = true;
    ASPxGridView4.CancelEdit();
    Session["ds2"] = ds2;
}
protected void ASPxGridView4_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
    ndr2 = ds2.Tables[0].NewRow();
    ndr2[0] = e.NewValues[0];
    ndr2[1] = e.NewValues[1];
    ndr2[2] = e.NewValues[2];
    ds2.Tables[0].Rows.Add(ndr2);

    e.Cancel = true;
    ASPxGridView4.CancelEdit();
    Session["ds2"] = ds2;
}

Этокак я это сделал в прошлый разЯ использовал datatables и сохранил, что на сессиях бла-бла действительно пробовал, но все работает хорошо.

...