我像在前台页面动态生成多个asp:button或者asp:linkbutton,然后点击其中一个asp:button或者asp:linkbutton时传递一个属性值到后台的响应事件中获取,并根据该值删除数据库的某个元组。
但是发现他们不像input button控件那样有name属性;并且asp:button或者asp:linkbutton这两个服务器控件的属性,不能用<%=a%>形式的变量来赋值。而用<%#a%>形式又只能调用后台cs文件定义的变量的值,在前台使用该变量的时候<%#a%>还是只能获取后台cs文件中该变量的值,前台的值获取不到。希望专家们给我看看
下面是源代码:
前台:
 <asp:View ID="view3" runat="server">
  <table width="1000" border="0" cellspacing="0" bgcolor="#FEFEE9">
  <tr>
  <td align="center" valign="middle">
  <table width="900" border="1" cellspacing="0" bgcolor="#FEFEE9" border=1><!--标题,前言部分-->
  <tr>
  <td align="center" width=15% height=35 >
  用户编号
  </td>
  <td align="center" width=15% height=35 >
  姓名
  </td>
  <td align="center" width=15% valign=center>
  密码
  </td>
  <td align="center" width=15% valign=center>
  是否曾经回答过题目
  </td>
  <td align="center" width=15% valign=center>
  是否是管理员
  </td>
  <td align="center" width=25% valign=center>
  <span style="font-size:18px;color:#FF00FF" border="10px">删除用户</span>
  </td>
  </tr>
  <%  
  strSQL2 = "SELECT * FROM login order by 自动编号";//access中SQL语句的数值上不要加' '单引号
  Da2 = new OleDbDataAdapter(strSQL2, ConnAcc);
  ds2 = new DataSet();
  Da2.Fill(ds2);//把数据库中的数据通过DataAdapter对象填充DataSet
  t2 = ds2.Tables[0];//取答案表
  // public int L1;
  for (j = 0; j < ds2.Tables[0].Rows.Count; j++)
  {
  // mmm = "5";
  L1 = j + 1;
  r2 = t2.Rows[j];
  c1 = t2.Columns[0];
  c2 = t2.Columns[1];
  c3 = t2.Columns[2];
  c4 = t2.Columns[3];
  c5 = t2.Columns[4];
  %>   
  <tr>
  <td align="center" width=15% height=35 >
  <span style="font-size:18px;color:#0000FF"> <%=r2[c1]%></span>
  </td>
  <td align="center" width=15% height=35 >
  <span style="font-size:18px;color:#0000FF"> <%=r2[c2]%></span>
  </td>
  <td align="center" width=15% valign=center>
  <span style="font-size:18px;color:#0000FF"> <%=r2[c3]%></span>
  </td>
  <td align="center" width=15% valign=center>
  <span style="font-size:18px;color:#0000FF">  
  <%if (int.Parse(r2[c4].ToString()) == 1)
  Response.Write("是");
  else
  Response.Write ("否");   
  %>
  </span>
  </td>
  <td align="center" width=15% valign=center>
  <span style="font-size:18px;color:#0000FF">   
  <%if (int.Parse(r2[c5].ToString()) == 1)
  Response.Write("是");
  else
  Response.Write("否");   
  %>
  </span>
  </td>
  <td align="center" width=25% valign=center>
  <asp:LinkButton runat="server" CommandName='<%#L1 %>' CommandArgument='<%#L1 %>' 
CausesValidation="False" onCommand="LinkButton_Command" Text='<%#L1 %>' >
删除当前用户<%=r2[c1]%>
</asp:LinkButton>   
  </td>
  </tr>
  <%} %>
  </table>
  </td>
  </tr>
  </table>
  </asp:View>后台:
 protected void LinkButton_Command(object sender, CommandEventArgs e)  
  {
  Conn = new OleDbConnection(strConn); //OleDb链接类的实例化
  Conn.Open();//打开数据库   
  strSQL = "SELECT count(*) FROM login";//SQL统计,SUM等等
  cmd = new OleDbCommand(strSQL, Conn);//创建Command命令对象
  //cmd.ExecuteReader();
  intNum = (int)cmd.ExecuteScalar();//得到统计数,SUM则用double,这里intNum表示当前用户总数
  str = ((LinkButton)sender).CommandName.ToString();
  //str = e.CommandArgument;
  delete1 = int.Parse(str);//获取点击的linkbutton按钮的CommandArgument值(对应题目序号)
  //delete1 = e.CommandName;
  for (i = 1; i <= intNum; i++)
  {
  if (i == delete1)
  // if (e.CommandArgument==i.ToString())  
  {
  strSQL = "delete from login where 自动编号=" + delete1;
  cmd = new OleDbCommand(strSQL, Conn);//创建Command命令对象
  cmd.ExecuteNonQuery();//执行命令
  }
  }