我的网格视图的数据源来自使用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();
}
答案 0 :(得分:0)
DataGridview中有RowCommand个事件。你需要调用你的CommandName并在那里执行你的操作。请参考给定的链接它对你很有帮助。
答案 1 :(得分:0)
单击网格视图行中的“编辑”链接时是否收到错误?
您可以处理以下三个事件,以便更新网格中的数据:
1)RowEditing
2)RowUpdating
3)RowCancellingEdit
在grdiview中使用事件名称+ linq数据源进行的简单谷歌搜索将提供足够多的示例