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必须设置了主键
更新 update table 1 set field2=field2+1 where ....2)int worth=Convert.ToInt32(player_list.DataKeys[e.Item.ItemIndex]);
注意DataGrid必须设置了主键
update table_name set colname=colname+1 where condition
2.请检查 e.Item.Cells[8] 是否有越界。
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类型
int.Parse( gridMain.DataKeys[int.Parse(e.Item.Cells[8].Text))].ToString())
这里
DataKeys[整型]);
如果每一行的按钮对应该行的记录,是这样写吗?那购买按钮的美工怎么设置?<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>