0

最初の質問は、私は正しい道を進んでいますか?.それをパラメーターとして渡すより良い方法はありますか? 私が正しい道を進んでいる場合は、以下のエラーを解決する方法を教えてください。

次の解決策は、この問題を解決するのに役立ちません: コントロール内で HTTPContext.Current.User.Identity.Name が機能していませんか?

私のコード:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:MyDbConn %>" 
    SelectCommand="SELECT id, Bookname, RequestType, Requestor, RequestDate FROM Requests WHERE (Requestor LIKE '%' + @Requestor + '%')">
    <SelectParameters>
        <asp:Parameter DefaultValue= "<%# HttpContext.Current.User.Identity.Name.Split('\\')[1] %>" Name="Requestor" />
    </SelectParameters>
</asp:SqlDataSource>

以下のエラーが発生します。

エラーの詳細

4

3 に答える 3

1

これを試してください私はそれをチェックしませんでした

# を = に置き換えます

<asp:Parameter DefaultValue= "<%= HttpContext.Current.User.Identity.Name.Split('\\')[1] %>" Name="Requestor" />
于 2012-03-25T21:12:26.663 に答える
0

これを試して

public Requests()
{
   this.Init += (_o, _e) => 
   {
       this.SqlDataSource1.Selecting += (o, e) =>
       {
           (o as SqlDataSourceView)
             .SelectParameters["Requestor"].DefaultValue = 
                      HttpContext.Current.User.Identity.Name;
       }
   }
}

また

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            SqlDataSource1.SelectParameters["Requestor"].DefaultValue = 
                          HttpContext.Current.User.Identity.Name;
        }
    }
于 2012-03-26T08:16:47.397 に答える
0

まあ....このコントロールでは <%# %> (データバインディング式) を使用できないと書かれています。

私はこのコントロールに慣れていませんが、ページのライフ サイクルの最初にプロパティ値を設定してみてください。

于 2012-03-25T21:06:27.720 に答える