public void dgListArticle_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if (e.CommandName=="ArticleCheck")
{
 Response.Redirect("login.aspx");
}
}

解决方案 »

  1.   

    <asp:ButtonColumn Text="审核" ButtonType="PushButton" HeaderText="审核" CommandName="ArticleCheck"></asp:ButtonColumn>因为没看到linkbotton
      

  2.   

    <asp:datagrid id="dgListArticle"... OnItemCommand="dgListArticle_ItemCommand" DataKeyField="ArticleId">其中的OnItemCommand="dgListArticle_ItemCommand" 好像没必要吧...
    另外switch(((LinkButton)e.CommandSource)也不对,应该是switch(((Button)e.CommandSource),因为你用的是pushbutton
    现象说的不是很清楚,只能猜了
      

  3.   

    if (e.CommandName=="ArticleCheck")
    {
     Response.Redirect("login.aspx");
    }
    这种方式不可以?
      

  4.   

    我试过楼上们的方法,都不行。
    现象是:按下button没反应。我已经把条件都去掉了,只剩一句response也不行。
      

  5.   

    另外, DataKeyField="ArticleId"是否必须.
      

  6.   

    我发现把ButtonType="PushButton"删掉就可以了,即用默认的LinkButton,但是为什么呢?
    是跟public void dgListArticle_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)有关?
      

  7.   

    是不是 你的pushbutton 的CommandName没有设置
      

  8.   

    <asp:ButtonColumn Text="审核" ButtonType="PushButton" HeaderText="审核" CommandName="ArticleCheck"></asp:ButtonColumn>将此处的CommandName="ArticleCheck" 去掉
      

  9.   

    有设啊,是Select。
    我什么都不动,只是把ButtonType="PushButton"删掉就可以了。
    大家可以试试。我看过MSDN的帮助,PushButton和LinkButton在_ItemCommand的用法都是一样的,真搞不懂为什么?
      

  10.   

    在pageload中
    if(!IsPostBack)
    {
    int TitleLength = 40; string sqlStr = "select * from Article order by completedtime desc";
    string sqlConn = ConfigurationSettings.AppSettings["SQLConnString"]; DataSet dsArticle = new DataSet();
    SqlDataAdapter daArticle = new System.Data.SqlClient.SqlDataAdapter(sqlStr,sqlConn);
    daArticle.Fill(dsArticle,"Article");
    for (int i=0;i<dsArticle.Tables["Article"].Rows.Count;i++)
    if (dsArticle.Tables["Article"].Rows[i]["Title"].ToString().Trim().Length>TitleLength+1)
    dsArticle.Tables["Article"].Rows[i]["SubTitle"] = dsArticle.Tables["Article"].Rows[i]["Title"].ToString().Trim().Remove(TitleLength,dsArticle.Tables["Article"].Rows[i]["Title"].ToString().Trim().Length-TitleLength)+"…";
    else dsArticle.Tables["Article"].Rows[i]["SubTitle"] = dsArticle.Tables["Article"].Rows[i]["Title"].ToString().Trim();
    dgListArticle.DataSource = dsArticle;
    dgListArticle.DataBind();}
      

  11.   

    另外, DataKeyField="ArticleId"是否必须.
    --------------
    是必须的
      

  12.   

    建议重新生成事件...
    然后
    if (e.CommandName=="ArticleCheck")
    {
     Response.Redirect("login.aspx");
    }
    这种方式应该没问题
      

  13.   

    同意Truly(小乐)的,将绑定DataGrid事件加在if(!IsPostBack)中。
      

  14.   

    private void Page_Load(object sender, System.EventArgs e)
    {
    if not ispostback then // 在此处放置用户代码以初始化页面
    int TitleLength = 40; string sqlStr = "select * from Article order by completedtime desc";
    string sqlConn = ConfigurationSettings.AppSettings["SQLConnString"]; DataSet dsArticle = new DataSet();
    SqlDataAdapter daArticle = new System.Data.SqlClient.SqlDataAdapter(sqlStr,sqlConn);
    daArticle.Fill(dsArticle,"Article");
    for (int i=0;i<dsArticle.Tables["Article"].Rows.Count;i++)
    if (dsArticle.Tables["Article"].Rows[i]["Title"].ToString().Trim().Length>TitleLength+1)
    dsArticle.Tables["Article"].Rows[i]["SubTitle"] = dsArticle.Tables["Article"].Rows[i]["Title"].ToString().Trim().Remove(TitleLength,dsArticle.Tables["Article"].Rows[i]["Title"].ToString().Trim().Length-TitleLength)+"…";
    else dsArticle.Tables["Article"].Rows[i]["SubTitle"] = dsArticle.Tables["Article"].Rows[i]["Title"].ToString().Trim();
    dgListArticle.DataSource = dsArticle;
    dgListArticle.DataBind();
    end if
    }
      

  15.   

    将绑定DataGrid事件加在if(!IsPostBack)
      

  16.   

    绑定要放在  not page.ispostback  里 不然每次按下按纽都要绑定一次  按纽事件不会执行
      

  17.   

    果然是ispostback的问题,谢谢大家.