C# “为什么要在单元格内按按钮?”;ROWDABUND";是否没有触发事件单击?

C# “为什么要在单元格内按按钮?”;ROWDABUND";是否没有触发事件单击?,c#,asp.net,gridview,C#,Asp.net,Gridview,我正在实现一个gridview,每个单元格内都有一个按钮。但我不明白为什么gridview上单元格内的按钮没有启动。我使用gridview RowDataBound和RowCommand检查按钮是否启动。我也在gridview外部创建了一个按钮,但它可以按预期工作。我真的不明白为什么gridview单元格上的按钮一单击就不启动 protected void ButtonCell_Click(object sender, EventArgs e) { Response.Write("But

我正在实现一个gridview,每个单元格内都有一个按钮。但我不明白为什么gridview上单元格内的按钮没有启动。我使用gridview RowDataBound和RowCommand检查按钮是否启动。我也在gridview外部创建了一个按钮,但它可以按预期工作。我真的不明白为什么gridview单元格上的按钮一单击就不启动

protected void ButtonCell_Click(object sender, EventArgs e)
{
    Response.Write("Button Click");
}

protected void GridViewPricing_RowCommand(object sender, GridViewCommandEventArgs e)
{
    Response.Write("Button Click");
}
在代码隐藏上生成gridview

DataTable dataTable = new DataTable();

dataTable.Columns.AddRange(new DataColumn[32]
{
            new DataColumn("Month"),
            new DataColumn("Day1"),
            new DataColumn("Day2"),
            new DataColumn("Day3"),
            new DataColumn("Day4"),
            new DataColumn("Day5"),
            new DataColumn("Day6"),
            new DataColumn("Day7"),
            new DataColumn("Day8"),
            new DataColumn("Day9"),
            new DataColumn("Day10"),
            new DataColumn("Day11"),
            new DataColumn("Day12"),
            new DataColumn("Day13"),
            new DataColumn("Day14"),
            new DataColumn("Day15"),
            new DataColumn("Day16"),
            new DataColumn("Day17"),
            new DataColumn("Day18"),
            new DataColumn("Day19"),
            new DataColumn("Day20"),
            new DataColumn("Day21"),
            new DataColumn("Day22"),
            new DataColumn("Day23"),
            new DataColumn("Day24"),
            new DataColumn("Day25"),
            new DataColumn("Day26"),
            new DataColumn("Day27"),
            new DataColumn("Day28"),
            new DataColumn("Day29"),
            new DataColumn("Day30"),
            new DataColumn("Day31")
});

DataRow dataRow;

var months = new string[] { "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" };

for (int i = 0; i < 12; i++)
{
    dataRow = dataTable.NewRow();

    dataRow["Month"] = months[i];

    for (int j = 0; j < 30; j++)
    {
    }

    dataTable.Rows.Add(dataRow);
}

GridView.DataSource = dataTable;
GridView.DataBind();

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        LoadDataSources();
    }
}
这是供观赏的

<asp:GridView ID="GridView"
runat="server"
AutoGenerateColumns="false"
CellPadding="0"
CellSpacing="0"
OnRowDataBound="GridViewPricing_RowDataBound"
OnRowCommand="GridViewPricing_RowCommand">
<Columns>
    <asp:BoundField DataField="Month" HeaderText="" />
    <asp:BoundField DataField="Day1" HeaderText="1" />
    <asp:BoundField DataField="Day2" HeaderText="2" />
    <asp:BoundField DataField="Day3" HeaderText="3" />
    <asp:BoundField DataField="Day4" HeaderText="4" />
    <asp:BoundField DataField="Day5" HeaderText="5" />
    <asp:BoundField DataField="Day6" HeaderText="6" />
    <asp:BoundField DataField="Day7" HeaderText="7" />
    <asp:BoundField DataField="Day8" HeaderText="8" />
    <asp:BoundField DataField="Day9" HeaderText="9" />
    <asp:BoundField DataField="Day10" HeaderText="10" />
    <asp:BoundField DataField="Day11" HeaderText="11" />
    <asp:BoundField DataField="Day12" HeaderText="12" />
    <asp:BoundField DataField="Day13" HeaderText="13" />
    <asp:BoundField DataField="Day14" HeaderText="14" />
    <asp:BoundField DataField="Day15" HeaderText="15" />
    <asp:BoundField DataField="Day16" HeaderText="16" />
    <asp:BoundField DataField="Day17" HeaderText="17" />
    <asp:BoundField DataField="Day18" HeaderText="18" />
    <asp:BoundField DataField="Day19" HeaderText="19" />
    <asp:BoundField DataField="Day20" HeaderText="20" />
    <asp:BoundField DataField="Day21" HeaderText="21" />
    <asp:BoundField DataField="Day22" HeaderText="22" />
    <asp:BoundField DataField="Day23" HeaderText="23" />
    <asp:BoundField DataField="Day24" HeaderText="24" />
    <asp:BoundField DataField="Day25" HeaderText="25" />
    <asp:BoundField DataField="Day26" HeaderText="26" />
    <asp:BoundField DataField="Day27" HeaderText="27" />
    <asp:BoundField DataField="Day28" HeaderText="28" />
    <asp:BoundField DataField="Day29" HeaderText="29" />
    <asp:BoundField DataField="Day30" HeaderText="30" />
    <asp:BoundField DataField="Day31" HeaderText="31" />
</Columns>
</asp:GridView>

试试这个:

在关闭
列的标记之前添加按钮

<asp:BoundField DataField="Day31" HeaderText="31" />
  <asp:ButtonField ButtonType="Button"  CommandName="ButtonCommandName" HeaderText="Buttons" 
     ShowHeader="True" Text="Click Me" ItemStyle-Width="30px" />
</Columns>
试试这个:

在关闭
列的标记之前添加按钮

<asp:BoundField DataField="Day31" HeaderText="31" />
  <asp:ButtonField ButtonType="Button"  CommandName="ButtonCommandName" HeaderText="Buttons" 
     ShowHeader="True" Text="Click Me" ItemStyle-Width="30px" />
</Columns>

它起作用了。但我想渲染整个单元格中的按钮,除了月份名称、列天数。您的问题只是按钮单击事件。。如果这是工作,并帮助你的问题,然后你可以使它作为回答。它的工作。但我想渲染整个单元格中的按钮,除了月份名称、列天数。您的问题只是按钮单击事件。。如果这是有效的,并且有助于解决您的问题,那么您可以按照回答来解决。删除
IsPostBack
检查
LoadDataSources()
。删除
IsPostBack
检查
LoadDataSources()
protected void GridViewPricing_RowCommand(object sender, GridViewCommandEventArgs e)
{
     int index = Convert.ToInt32(e.CommandArgument);
      GridViewRow gvRow = GridViewPricing.Rows[index];
     if (e.CommandName == "ButtonCommandName")
      {
          //Your Code here something like 
           gvRow.Cells[0].Text

      }
}