こんにちは、c# で databinder.eval を使用する方法を知っている人
実際に私はこれを試しました
LinkButton lnkName = new LinkButton();
lnkName.CommandArgument = DataBinder.Eval("object","<%#COURSE_ID%>");
エラーを表示しています。これの何が問題なのですか?
こんにちは、c# で databinder.eval を使用する方法を知っている人
実際に私はこれを試しました
LinkButton lnkName = new LinkButton();
lnkName.CommandArgument = DataBinder.Eval("object","<%#COURSE_ID%>");
エラーを表示しています。これの何が問題なのですか?
たとえば、デザインページでは次のように使用できます。
<asp:Button ID="btnEdit" CommandName="Edit"
CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'
CssClass="cursor_hand" runat="server" Text="Edit" />
コードビハインド:
int rowIndex = int.Parse(e.CommandArgument.ToString());
if (e.CommandName.Equals("Edit"))
{
//do something
}
aspx ページの分離コードで Eval を使用することはできません。
これ:
lnkName.CommandArgument = DataBinder.Eval("object","<%#COURSE_ID%>");
これである必要があります:
lnkName.CommandArgument = YOUR_OBJECT_PROPERTY_HERE;
YOUR_OBJECT_PROPERTY_HERE に入力するには、C# コードで通常のように object.property などを指定するか、リフレクションを使用してオブジェクトからプロパティ値を取得する必要があります (これは eval が行うことです)。
リフレクションを使用してオブジェクトからプロパティ情報を取得する方法を示すリンクを次に示します。必要に応じて、eval の動作を複製するために使用できます。
DataBinder Eval メソッドへのリンク: http://msdn.microsoft.com/en-us/library/4hx47hfe.aspx
DataBinder Eval メソッドのしくみ (および作成者が避けるべきだと考える理由) http://weblogs.asp.net/jgalloway/archive/2005/09/20/425687.aspx
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex > -1)
{
string h = DataBinder.Eval(e.Row.DataItem, "ColumnName").ToString();
}
}
<% %>
C# コードではなく *.aspx コードでEval 式を使用する必要があります。