我像在前台页面动态生成多个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();//执行命令
}
}
但是发现他们不像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();//执行命令
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货