私のグリッド ビューのデータ ソースは、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();
}