2011-06-07 70 views
0

我有一個頁面使用ASPxGridView並填充GridView我使用LinqServerModeDataSource控件通過SQL視圖從MS SQL Server中獲取數據。到目前爲止這麼好,但問題來了。ASPxGridView和LinqServerModeDataSource,通過存儲過程插入行

我想在數據庫中插入數據,所以我建立一個自定義窗體

<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等,但沒有。這是失敗的代碼之一。而devexpress文檔更糟糕,但不要去那裏不愉快的地方。

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

因此,任何意見或幫助,高度讚賞。

謝謝!

回答

1

「我想在數據庫中插入數據,所以我正在構建一個自定義窗體」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; 
} 

那怎麼我上次做了。我使用了數據表,並將它存儲在會話中,但最後只是嘗試,但它工作正常。