0

編集された質問

変数 (この場合は文字列 bill を含む 'name') をコード ビハインド メソッドに渡し、debug.print を使用してそれを確認したいと考えています。

string name = "bill";
<asp:ImageButton runat="server" id="DeleteButton"  ImageUrl="Images/delete.jpg" 
CommandArgument='<%# Eval("name") %>' CommandName="ThisBtnClick" text="Delete Me" onclick="DeleteMonth" /> 

私はもう試した:

CommandArgument='<%# Eval("name") %>'
CommandArgument='<%# Bind("name") %>'
CommandArgument='<%= "name" %>

これは私の印刷機能です

protected void DeleteMonth(object sender, EventArgs e)
{
    ImageButton btn = (ImageButton)sender;
      switch (btn.CommandName)
    {
        case "ThisBtnClick":
            Debug.Print("--" + btn.CommandArgument.ToString());
            break;
        case "ThatBtnClick":
            break;
    }
}

最初に何かをデータバインドする必要があると思いますが、正直なところわかりません。印刷すると空白になります。誰もこれに対処したことがありますか

編集

私がやりたいことは、テーブルを動的に作成することです。name 変数がデータベースから取得され、その名前に基づいてテーブルが作成されます。テーブルの最後の列を X にしたいので、その行のすべてを削除できます。私はイメージボタンを使用しています。これが私のコードです

using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(sqlConnectionString))
    {
        conn.Open();
        string query = "SELECT * FROM dbo.Archive";
        System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(query, conn);
        System.Data.SqlClient.SqlDataReader rdr = cmd.ExecuteReader();

        while (rdr.Read())
        {
            string name, created, 1Updated, 2Updated, 3Updated;
            name = rdr.GetString(1);                    // name of month
            if (!(rdr.IsDBNull(2)))                     // checks date for a null value
            { created = rdr.GetDateTime(2).ToString(); }// if not null date is turned into a string and saved in a variable
            else
            { created = "---"; }                        // else date is given a default value
            if (!(rdr.IsDBNull(3)))
            { 1Updated = rdr.GetDateTime(3).ToString(); }
            else
            { 1Updated = "---"; }
            if (!(rdr.IsDBNull(4)))
            { 2Updated = rdr.GetDateTime(4).ToString(); }
            else
            { 2Updated = "---"; }
            if (!(rdr.IsDBNull(5)))
            { 3Updated = rdr.GetDateTime(5).ToString(); }
            else
            { 3Updated = "---"; }

            Response.Write("<tr><td>" + name + "</td>");
            Response.Write("<td>" + created + "</td>");
            Response.Write("<td>" + 1Updated + "</td>");
            Response.Write("<td>" + 2Updated + "</td>");
            Response.Write("<td>" + 3Updated + "</td>");
            Response.Write("<td><a>1</a></td>");
            Response.Write("<td><a>2</a></td>");
            Response.Write("<td><a>3</a></td>");
            Response.Write("<td><a>Compliance Summary</a></td>");

            Response.Write("<td align = 'center'>"+name);%> 
            <asp:ImageButton runat="server" id="DeleteButton"  ImageUrl="Images/delete.jpg" 
            CommandArgument='<%# Eval("name") %>' CommandName="ThisBtnClick" text="Delete Me" onclick="DeleteMonth" /> 
            <% Response.Write("</td></tr>");
        }     
4

2 に答える 2

3

こんな使い方……

<asp:ImageButton runat="server" id="DeleteButton"  ImageUrl="Images/delete.jpg"      
CommandArgument='<%# Eval("UserName")%>' text="Delete Me" onclick="DeleteMonth" />

 protected void DeleteMonth(object sender, EventArgs e)
 {

**ImageButton btn = ((ImageButton)sender).CommandArgument;** 
  switch (btn.ToString()) 
  { 
        case "ThisBtnClick": 
            Debug.Print("--" + btn.CommandArgument.ToString()); 
            break; 
        case "ThatBtnClick": 
            break; 
   } 
} 
于 2012-06-12T10:14:12.383 に答える
1

使用するCommandArgument='<%#Eval("name")%>'

それ以外のCommandArgument="<%Response.Write(name);%>"

編集

GridView、FormView、DataList などのデータ コントロールを使用していませんか? そうでない場合は、Eval メソッドを使用するためにそれらのいずれかを使用する必要があります。GridView の例として、最初に GridView データソースをバインドする必要があります。

http://msdn.microsoft.com/en-us/library/aa479353.aspx

また

DB フィールドのパブリック プロパティを宣言します。 asp.net で Eval を使用してデータベースからフィールドを読み取るにはどうすればよいですか?

Eval メソッドは、データ フィールドの名前を受け取り、データ ソースの現在のレコードからそのフィールドの値を含む文字列を返します。

于 2012-06-12T11:00:10.583 に答える