0

私のグリッド ビューのデータ ソースは、linqdatasource を使用したスト​​アド プロシージャです。この linqdatasource のパラメーターはテキスト ボックス (txtSearchKeywords) です。検索ボタンを押すと、グリッドビューは以下のコードに従ってデータを取得します。今、グリッドビューのいくつかの行を更新または削除したいので、コマンド フィールド (編集/削除) をグリッドビューに追加し、linqdatasource の編集/削除を有効にしましたが、行を更新できず、実際には行を入力することさえできません。何もアクティブではなく、編集/更新/キャンセル ボタンのみが表示されます。どうすれば解決できますか?

ストアド プロシージャ:

ALTER PROCEDURE [dbo].[spQuickSearchDoc]
  @Searchtext varchar(50)=null
AS
 select DocId,DocumentNo,Title,Unit
 from tblDocuments
 where DocumentNo like '%'+@SearchText + '%'
  or Title like '%'+@SearchText + '%'
  or Unit like '%'+@SearchText + '%'

linqデータソース:

 <asp:LinqDataSource ID="LinqDataSource2" runat="server" 
          ContextTypeName="EDMSDataContext" OnSelecting="LinqDataSource2_Selecting" 
          EnableDelete="True" EnableUpdate="True" TableName="tblDocuments" EnableInsert="True"  
           >
          <WhereParameters>
    <asp:ControlParameter Name="Subject"
                          ControlID="txtSearchKeywords"
                          PropertyName="Text"
                          Type="String" />
</WhereParameters>
      </asp:LinqDataSource>

グリッドビュー:

<asp:GridView ID="GridViewDocuments_Search" runat="server" AutoGenerateColumns=False 
          Visible="False" onrowcommand="GridViewDocuments_Search_RowCommand" DataKeyNames="DocId" 
          PageSize="100" DataSourceID="LinqDataSource2"  >
    <Columns>
        <asp:BoundField DataField="DocumentNo" HeaderText="DocumentNo" 
            SortExpression="DocumentNo" ReadOnly="True" />

        <asp:BoundField DataField="TITLE" HeaderText="TITLE" ReadOnly="True" 
            SortExpression="TITLE" />

       <asp:BoundField DataField="Unit" HeaderText="Unit" SortExpression="Unit" 
            ReadOnly="True" />
        <asp:BoundField DataField="DocId" HeaderText="DocId" ReadOnly="True" 
            SortExpression="DocId" />
        <asp:CommandField ShowEditButton="True" />
        <asp:CommandField ShowDeleteButton="True" />
    </Columns>
</asp:GridView>

コード:

public void LinqDataSource2_Selecting(object sender, LinqDataSourceSelectEventArgs e)
 {
_DataContext = new EDMSDataContext();

 var subjectFilter = e.WhereParameters["Subject"];


 var query = _DataContext.spQuickSearchDoc(subjectFilter.ToString());


e.Result = query;
}


  protected void btnSearch_Click(object sender, EventArgs e)
{
    _DataContext = new EDMSDataContext();
    this.LinqDataSource2.WhereParameters["Subject"].DefaultValue = this.txtSearchKeywords.Text;

    GridViewDocuments.Visible = false;
    GridViewDocuments_Search.Visible = true;
    this.GridViewDocuments_Search.DataBind();

}
4

2 に答える 2

0

DataGridview で使用できるRowCommandイベントがあります。CommandName を呼び出して、その中で操作を実行する必要があります。指定されたリンクを参照してください。非常に役に立ちます。

于 2012-12-19T04:32:07.820 に答える
0

グリッド ビューの行で [編集] リンクをクリックすると、エラーが発生しますか?

グリッド内のデータを更新できるようにするために、次の 3 つのイベントを処理できます。

1) 行編集

2) 行の更新

3) RowCancellingEdit

イベント名 + grdiview の linq データソースを使用した単純な Google 検索では、方法に関する十分な例が表示されます。

于 2012-12-19T05:08:05.903 に答える