我像在前台页面动态生成多个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();//执行命令
            }
        }

解决方案 »

  1.   


    <script>
    var theForm = document.forms['Form2'];
    if (!theForm) {
        theForm = document.Form2;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    </script><input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /><a href="javascript:void(0);" onclick="__doPostBack('用户ID','deluser')">删除用户</a>if (Request["__EVENTARGUMENT"] == "deluser")
    {
        DelUser(Request["__EVENTTARGET"]);
    }
    protected void DelUser(string id)
    {
       //删除用户逻辑
    }