读书人

本人初学者请求各位大侠帮忙

发布时间: 2013-02-24 17:58:56 作者: rapoo

本人菜鸟,请求各位大侠帮忙
如何实现datalist中checkbox与DataList1_ItemCommand事件关联,即选中某一个CheckBox的时候,单击“接受”,实现添加数据功能????

管理员页面 Admin.aspx为:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Admin.aspx.cs" Inherits="Admin" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>管理员页面</title>
<style type="text/css">
.styleTable
{
text-align:center ; width :100%
}
.styleCell
{
font-size :16pt; font-family :华文彩云; color :#669900;
}
.stylePage
{
width: 70px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>

<asp:DataList ID="DataList1" runat="server" Width ="100%"
onitemcommand="DataList1_ItemCommand">
<HeaderTemplate>
<table class="styleTable">
<tr> <td colspan="5" ><h1>申请用户信息</h1></td></tr>
<tr class =" styleCell">
<td>
选择</td>
<td>
邮箱</td>
<td>
密码</td>
<td>
昵称</td>


<td>
姓名</td>
<td>
选项</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:CheckBox ID="chbSelect" runat="server" /></td>
<td>
<asp:Label ID ="lblMailBox" Text ='<%#Eval ("MailBox") %>' runat ="server" ></asp:Label></td>
<td>
<asp:Label ID ="lblPassWord" Text ='<%#Eval ("PassWord") %>' runat ="server"></asp:Label> </td>
<td>
<asp:Label ID ="lblPetName" Text='<%#Eval("PetName")%>' runat ="server"></asp:Label></td>
<td>
<asp:Label ID ="lblName" Text ='<%#Eval("Name")%>' runat ="server"></asp:Label> </td>
<td>
<asp:LinkButton ID="lnkbtnAccept" runat="server" CommandName="accept" Text="接受"></asp:LinkButton>
<asp:LinkButton ID="lnkbtnReject" runat="server" CommandName="reject" Text="拒绝" ></asp:LinkButton></td>


</tr>
</ItemTemplate>
<SeparatorTemplate>
<tr>
<td colspan ="6"><hr />
</td>
</tr>
</SeparatorTemplate>
<FooterTemplate >
</table>
</FooterTemplate>
</asp:DataList>

</div>
<asp:Button ID="btnChoice" runat="server" Text="全选" Width="100px"
onclick="btnChoice_Click" />
<br />
<br />
<table>
<tr>
<td class="stylePage">
<asp:Label ID="lblSumPage" runat="server" Text="总页数:"></asp:Label>
</td>
<td class="stylePage">
<asp:Label ID="lblSumPageNum" runat="server"></asp:Label>
</td>
<td class="stylePage">
<asp:Label ID="lblCurrentPage" runat="server" Text="当前页:"></asp:Label>
</td>
<td class="stylePage">
<asp:Label ID="lblCurrentPageNum" runat="server" Text="1"></asp:Label>
</td>
<td>
<asp:LinkButton ID="lnkFirstPage" runat="server" onclick="lnkFirstPage_Click">首页</asp:LinkButton>
</td>


<td>
<asp:LinkButton ID="lnkPageUp" runat="server" onclick="lnkPageUp_Click">上一页</asp:LinkButton>
</td>
<td>
<asp:LinkButton ID="lnkPageDown" runat="server" onclick="lnkPageDown_Click">下一页</asp:LinkButton>
</td>
<td>
<asp:LinkButton ID="lnkLastPage" runat="server" onclick="lnkLastPage_Click">末页</asp:LinkButton>
</td>
<td>
 </td>
</tr>
</table>
</form>
</body>
</html>
后台Admin.aspx.cs部分代码
protected void btnChoice_Click(object sender, EventArgs e)
{
if (btnChoice.Text == "全选")
{
foreach (DataListItem dli in DataList1.Items)
{
CheckBox cb = (CheckBox)dli.FindControl("chbSelect");
cb.Checked = true;
}
btnChoice.Text = "全部取消";
}
else
{
foreach (DataListItem dli in DataList1.Items)
{
CheckBox cb = (CheckBox)dli.FindControl("chbSelect");
cb.Checked = false ;
}
btnChoice.Text = "全选";
}
}
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandSource.GetType() == typeof(LinkButton))
{
if (((LinkButton)e.CommandSource).CommandName == "accept")


{
try
{
SqlDataAdapter da = new SqlDataAdapter();
SqlConnection conn = new SqlConnection();
//打开用户UserData数据库
conn.ConnectionString = "Data Source=.;Initial Catalog=UserDate;Integrated Security=True";
SqlCommand selectCmd = new SqlCommand();
selectCmd.CommandText = "select * from UserDate";
selectCmd.Connection = conn;
SqlCommand insertCmd = new SqlCommand();
insertCmd.CommandText = "insert into UserDate values (@MailBox,@PassWord,@PetName,@Name)";
insertCmd.Connection = conn;
insertCmd.Parameters.Add("@MailBox", SqlDbType.NChar, 20, "MailBox");
insertCmd.Parameters.Add("@PassWord", SqlDbType.NChar, 20, "PassWord");
insertCmd.Parameters.Add("@PetName", SqlDbType.NChar, 10, "PetName");
insertCmd.Parameters.Add("@Name", SqlDbType.NChar, 10, "Name");
da.SelectCommand = selectCmd;
da.InsertCommand = insertCmd;
DataSet data = new DataSet();
da.Fill(data, "UserDate");


DataRow drNew = data.Tables["UserDate"].NewRow();
drNew["MailBox"] = ((Label)e.Item.FindControl("lblMailBox")).Text;
drNew["PassWord"] = ((Label)e.Item.FindControl("lblPassWord")).Text;
drNew["PetName"] = ((Label)e.Item.FindControl("lblPetName")).Text;
drNew["Name"] = ((Label)e.Item.FindControl("lblName")).Text;
data.Tables["UserDate"].Rows.Add(drNew);
da.Update(data, "UserDate");
//打开管理员Admin数据库
conn.ConnectionString = "Data Source=.;Initial Catalog=Admin;Integrated Security=True";
selectCmd.CommandText = "select * from UserStore";
SqlCommand deleteCmd = new SqlCommand();
deleteCmd.CommandText = "delete UserStore where MailBox=@MailBox";
deleteCmd.Connection = conn;
deleteCmd.Parameters.Add("@MailBox", SqlDbType.NChar, 20, "MailBox");
da.DeleteCommand = deleteCmd;
da.Fill(data, "UserStore");
string mailBox = ((Label)e.Item.FindControl("lblMailBox")).Text;
DataRow delDr = null;
foreach (DataRow dr in data.Tables["UserStore"].Rows)
{


if (dr["MailBox"].ToString() == mailBox)
{
delDr = dr;
break;
}
}
if (delDr != null)
{
delDr.Delete();
da.Update(data, "UserStore");
}
}
catch (SqlException ex)
{
Response.Write(ex.Message);
}
Response.Redirect("Admin.aspx");
}
} 楼主的意思是要在点“接收”按钮的时候,进行判断,如果CheckBox选中了就添加到数据库,如果没有选中就不添加?


protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
CheckBox box = e.Item.FindControl("chbSelect") as CheckBox;
if (box == null //如果无法找到CheckBox


[解决办法]
!box.Checked //如果CheckBox没有选中
)
{
return;
}

//TODO Sth.
}

读书人网 >C#

热点推荐