1) 查询select field1,field2+1 as field2 from .......
  更新 update table 1 set field2=field2+1 where ....2)int worth=Convert.ToInt32(player_list.DataKeys[e.Item.ItemIndex]);
 注意DataGrid必须设置了主键

解决方案 »

  1.   

    第一个
    update table_name set colname=colname+1 where condition
      

  2.   

    1.Update 表 set int列=int列+1 WHERE int列=要改的列;
    2.请检查 e.Item.Cells[8] 是否有越界。
      

  3.   

    现在我把程序贴出来 分不够再加啊
    public void buy_player(object sender, DataGridCommandEventArgs e)
    {
    int j=0;
    int user_id=(int)Session["user"];
    if(j==0){//判断球员是否已经买入
    String SQL="Select * from soccer_exchange where user_id=@user_id and player_id=@player_id and state=1";
    SqlCommand cmd=new SqlCommand(SQL,Conn);
    cmd.Parameters.Add(new SqlParameter("@player_id",SqlDbType.Int,4));
    cmd.Parameters["@player_id"].Value = player_list.DataKeys[(int)e.Item.ItemIndex];
    cmd.Parameters.Add(new SqlParameter("@user_id",SqlDbType.Int,4));
    cmd.Parameters["@user_id"].Value =user_id;
    Conn.Open();
    SqlDataReader reader = cmd.ExecuteReader(); if(reader.Read())
    {
    j=1;
    }
    else{j=0;}
    reader.Close();
    Conn.Close();
    } if(j==0){//判断流动资金是否够买球员
        String SQL="Select capital_m from soccer_manager where user_id=@user_id";
    SqlCommand cmd=new SqlCommand(SQL,Conn);
    cmd.Parameters.Add(new SqlParameter("@user_id",SqlDbType.Int,4));
    cmd.Parameters["@user_id"].Value =user_id;
    Conn.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    reader.Read();
    int money=reader.GetInt32(0);
    int worth=Convert.ToInt32(player_list.DataKeys[e.Item.Cells[8].Text].);
    reader.Close();
    Conn.Close();
    if(money<worth)
    {
    j=2;
    }
    else{j=0;}
    } if(j==0){//判断已买球员的个数是否超过了系统规定的限制
    String SQL="Select count(*) from soccer_exchange where user_id=@user_id and state=1";
    SqlCommand cmd = new SqlCommand(SQL, Conn);
    cmd.Parameters.Add(new SqlParameter("@user_id",SqlDbType.Int,4));
    cmd.Parameters["@user_id"].Value =user_id;
    Conn.Open();
    int n = Convert.ToInt32(cmd.ExecuteScalar());
    Conn.Close();
    if(n==15)
    {
    j=3;
    }
    }
    if(j==0){//查询系统设置表里面的当前轮数
    string SQL_game="Select game from soccer_system";
    SqlCommand cmd_game=new SqlCommand(SQL_game,Conn);
    Conn.Open();
    SqlDataReader reader_game = cmd_game.ExecuteReader();
    reader_game.Read();
    int game=reader_game.GetInt32(0);
    //验证无错后,插入一条记录到球员交易表
    string insertcmd="insert into soccer_exchange(user_id,player_id,kind,worth,game,state) values(@user_id,@player_id,@kind,@worth,@game,@state)";
    SqlCommand cmd = new SqlCommand(insertcmd,Conn);

    cmd.Parameters.Add(new SqlParameter("@user_id",SqlDbType.Int));
    cmd.Parameters.Add(new SqlParameter("@player_id",SqlDbType.Int));
    cmd.Parameters.Add(new SqlParameter("@kind",SqlDbType.Int));
    cmd.Parameters.Add(new SqlParameter("@worth",SqlDbType.Int));
    cmd.Parameters.Add(new SqlParameter("@game",SqlDbType.Int));
    cmd.Parameters.Add(new SqlParameter("@state",SqlDbType.Int));
    cmd.Parameters["@user_id"].Value =user_id;
    cmd.Parameters["@player_id"].Value =player_list.DataKeys[(int)e.Item.ItemIndex];
    cmd.Parameters["@kind"].Value =0;
    cmd.Parameters["@worth"].Value =Convert.ToInt32(player_list.DataKeys[e.Item.Cells[8].Text]);
    cmd.Parameters["@game"].Value =game;
    cmd.Parameters["@state"].Value =1;
    cmd.Connection.Open();
    cmd.ExecuteNonQuery();
    cmd.Connection.Close();
                    //修改足球经理资料表,使该玩家的流动资金减去球员身价 //先获得流动资金数,名称后以0作区别
    string SQL="Select capital_m from soccer_manager where user_id=@user_id";
    SqlCommand cmd0=new SqlCommand(SQL,Conn);
    cmd0.Parameters.Add(new SqlParameter("@user_id",SqlDbType.Int,4));
    cmd0.Parameters["@user_id"].Value =user_id;
    Conn.Open();
    SqlDataReader reader0 = cmd0.ExecuteReader();
    reader0.Read();
    int money0=reader0.GetInt32(0);
    reader0.Close();
    Conn.Close();
    int worth0=Convert.ToInt32(player_list.DataKeys[e.Item.Cells[8].Text]);
    //然后修改流动资金
    string updatecmd = "UPDATE soccer_manager SET capital_m=@capital_m where user_id=@user_id";
    SqlCommand cmd1 = new SqlCommand(updatecmd,Conn);
    cmd1.Parameters.Add(new SqlParameter("@user_id",SqlDbType.Int));
    cmd1.Parameters["@user_id"].Value =user_id;
    cmd1.Parameters.Add(new SqlParameter("@capital_m",SqlDbType.Int));
    cmd1.Parameters["@capital_m"].Value =money0-worth0;
    cmd1.Connection.Open();
    cmd1.ExecuteNonQuery();
    cmd1.Connection.Close();
    }这一行报错:int worth=Convert.ToInt32(player_list.DataKeys[e.Item.Cells[8].Text]);
    错误信息1:与“System.Web.UI.WebControls.DataKeyCollection.this[int]”最匹配的重载方法具有一些无效参数
    错误信息2:无法从string类型转化为int类型
      

  4.   

    player_list.DataKeys[Convert.ToInt32(e.Item.Cells[8].Text)]
      

  5.   


    int.Parse( gridMain.DataKeys[int.Parse(e.Item.Cells[8].Text))].ToString())
      

  6.   

    int worth=Convert.ToInt32(player_list.DataKeys[e.Item.Cells[8].Text]);
    这里
    DataKeys[整型]);
      

  7.   

    我改成了int worth=Convert.ToInt32(e.Item.Cells[8].Text);这样没报错
    如果每一行的按钮对应该行的记录,是这样写吗?那购买按钮的美工怎么设置?<asp:datagrid id="player_list" runat="server" AllowPaging="True" PageSize="5" OnPageIndexChanged="player_list_Page"
    Width="600px" AutoGenerateColumns="False" Font-Size="12px" DataKeyField="player_id" OnItemCommand="buy_player">
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
    <Columns>
    <asp:TemplateColumn HeaderText="姓名">
    <ItemTemplate>
    <A href='player_show.aspx?player_id=<%# DataBinder.Eval(Container.DataItem, "player_id") %>' style="TEXT-DECORATION: none" target="_blank">
    <FONT color="black">
    <%# DataBinder.Eval(Container.DataItem,"player_cn").ToString()%>
    </FONT></A>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="球队">
    <ItemTemplate>
    <A href='team_show.aspx?team_cn=<%# DataBinder.Eval(Container.DataItem, "team_cn") %>' style="TEXT-DECORATION: none" target="_blank">
    <FONT color="black">
    <%# DataBinder.Eval(Container.DataItem,"team_cn").ToString()%>
    </FONT></A>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:BoundColumn DataField="posit" HeaderText="位置"></asp:BoundColumn>
    <asp:BoundColumn DataField="score_last" HeaderText="上轮得分"></asp:BoundColumn>
    <asp:BoundColumn DataField="score" HeaderText="总分"></asp:BoundColumn>
    <asp:BoundColumn DataField="buy_club" HeaderText="买入统计"></asp:BoundColumn>
    <asp:BoundColumn DataField="fire_club" HeaderText="卖出统计"></asp:BoundColumn>
    <asp:TemplateColumn HeaderText="评论">
    <ItemTemplate>
    <A href='player_review.aspx?player_id=<%# DataBinder.Eval(Container.DataItem, "player_id") %>' style="TEXT-DECORATION: none" target="_blank">
    <FONT color="black">查看 </FONT></A>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:BoundColumn DataField="worth" HeaderText="身价(万)"></asp:BoundColumn>
    <asp:ButtonColumn Text="购买" ButtonType="PushButton" CommandName="buy_player"></asp:ButtonColumn>
    </Columns>
    <PagerStyle HorizontalAlign="Right" Mode="NumericPages"></PagerStyle>
    </asp:datagrid>