0

gridviewとlinqdatasourseを使用しましたが、検索ボタンをクリックすると、グリッドビューはlinqストアドプロシージャで埋められます。

以下のようにしましたが、エラーが発生しました""'System.Web.UI.WebControls.LinqDataSourceSelectEventArgs.WhereParameters'はメソッドのように使用できません "

var subjectFilter = e.WhereParameters("Subject");

グリッドビュー:

<asp:GridView ID="GridViewDocuments_Search" 
              runat="server" 
              AutoGenerateColumns=False 
              Visible="False"
              onrowcommand="GridViewDocuments_Search_RowCommand"
              DataKeyNames="DocID" PageSize="100">
    <Columns>
        <asp:TemplateField HeaderText = "Details">
            <ItemTemplate>
                <asp:Button ID ="btn_Show" 
                            Text="Details" 
                            runat= "server" 
                            CommandName= "Details" 
                            CommandArgument=
                                '<%#Container.DataItemIndex%>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="DocumentNo" 
                        HeaderText="DocumentNo" 
                        SortExpression="DocumentNo" />
        <asp:BoundField DataField="title" 
                        HeaderText="Title" 
                        SortExpression="title" />

        <asp:BoundField DataField="Docid" 
                        HeaderText="Docid" 
                        Visible="false" />
        <asp:CommandField ShowEditButton="True" />
        <asp:CommandField ShowDeleteButton="True" />
    </Columns>
</asp:GridView>

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

コード:

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


public void LinqDataSource2_Selecting(object sender, 
                                      LinqDataSourceSelectEventArgs e)
{
    _DataContext = new EDMSDataContext();       
    var subjectFilter = e.WhereParameters("Subject");
    var query = _DataContext.spQuickSearchDoc(txtSearchKeywords.Text);
    e.Result = query;
}

ストアドプロシージャ:

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 + '%'
4

2 に答える 2

0

これはWhereParameters、例外が言うように、プロパティをメソッドのように使用できないために発生します。次のようにプロパティをクエリします。

e.WhereParameters["Subject"]

LinqDataSourceSelectEventArgsクラスを調べると、このプロパティは次のように表示されます。

public IDictionary<string, Object> WhereParameters { get; }

参照:

LinqDataSourceSelectEventArgs

LinqDataSourceSelectEventArgs.WhereParametersプロパティ

于 2012-12-18T08:29:02.303 に答える
0

LinqDataSource2_Selectingメソッドでは、次のように「[」括弧を記述する必要があります。

var subjectFilter = e.WhereParameters["Subject"];
于 2012-12-18T08:30:21.673 に答える