Gridview更新

时间:2012-12-19 04:16:37

标签: asp.net linq

我的网格视图的数据源来自使用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 + '%'

的LinqDataSource:

 <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>

的GridView:

<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();

}

2 个答案:

答案 0 :(得分:0)

DataGridview中有RowCommand个事件。你需要调用你的CommandName并在那里执行你的操作。请参考给定的链接它对你很有帮助。

答案 1 :(得分:0)

单击网格视图行中的“编辑”链接时是否收到错误?

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

1)RowEditing

2)RowUpdating

3)RowCancellingEdit

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