0

我的网格视图的数据源来自使用 linqdatasource 的存储过程。这个 linqdatasource 的参数是文本框(txtSearchKeywords),当我按下搜索按钮时,gridview 根据下面的代码获取数据。现在我喜欢更新或删除gridview的一些行,所以我在gridview中添加了命令字段(编辑/删除)并启用了编辑/删除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

单击网格视图行中的编辑链接时是否出现错误?

您可以处理以下三个事件以更新网格中的数据:

1) 行编辑

2) 行更新

3) 行取消编辑

在 grdiview 中使用事件名称 + linq 数据源进行简单的谷歌搜索将提供足够多的示例来说明如何

于 2012-12-19T05:08:05.903 回答