我在datalist的ItemTemplate里放了checkbox,代码如下:<asp:DataList ID="DataList3" runat="server"
onitemdatabound="DataList3_ItemDataBound">
<ItemTemplate>
<asp:CheckBox ID="CheckOption" runat="server" value='<%# Eval("id")%>'
oncheckedchanged="CheckOption_CheckedChanged" AutoPostBack="True" />
</ItemTemplate>
</asp:DataList>
现在我想要实现当选中了checkbox后,就返回该checkbox的value,(value='<%# Eval("id")%>') ??
而且我发现protected void CheckOption_CheckedChanged(object sender, EventArgs e)事件怎么没反应?难道一定要有protected void DataList3_ItemDataBound(object sender, DataListItemEventArgs e)事件吗?就算两个事件都有,运行时也只是刷新一下页面,并无任何反应?我想实现当选中了checkbox后,就返回该checkbox的value,(value='<%# Eval("id")%>') 可以吗??谢谢!!
onitemdatabound="DataList3_ItemDataBound">
<ItemTemplate>
<asp:CheckBox ID="CheckOption" runat="server" value='<%# Eval("id")%>'
oncheckedchanged="CheckOption_CheckedChanged" AutoPostBack="True" />
</ItemTemplate>
</asp:DataList>
现在我想要实现当选中了checkbox后,就返回该checkbox的value,(value='<%# Eval("id")%>') ??
而且我发现protected void CheckOption_CheckedChanged(object sender, EventArgs e)事件怎么没反应?难道一定要有protected void DataList3_ItemDataBound(object sender, DataListItemEventArgs e)事件吗?就算两个事件都有,运行时也只是刷新一下页面,并无任何反应?我想实现当选中了checkbox后,就返回该checkbox的value,(value='<%# Eval("id")%>') 可以吗??谢谢!!
onitemdatabound="DataList3_ItemDataBound">
<ItemTemplate>
<input id="CheckOption" type="checkbox" name="CheckOption" onchange="CheckOption_CheckedChanged" runat="server" value=' <%# Eval("id")%>' />
</ItemTemplate>
</asp:DataList>
后台:protected void CheckOption_CheckedChanged(object sender, EventArgs e)
{
Request.Params["CheckOption"].ToString();
}
没有任何反应的,我知道我这么写是错的,可HTML控件怎么写事件才是对的呢?(通过事件先判断选中的是哪个checkbox,然后根据选中的那个显示它的value)??
在点击checkbox时想根据选中的那个checkbox显示它的value,value值是我通过数据库绑定的id,得到了value之后我就能知道选的是哪个选项,从而让这个选项的投票数增加,我做的是投票系统
<head runat="server">
<title></title>
<script type="text/javascript">
function vote(obj)
{
alert(obj.value);
//可以得到value的值
//然后可以用ajax的方法 给该ID投一票
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataList ID="DataList1" runat="server">
<HeaderTemplate>
<table>
<tr>
<td>选择</td>
<td>编号</td>
<td>名称</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><input type="checkbox" value='<%# Eval("ID") %>' onclick="vote(this)" /></td>
<td><%# Eval("ID") %></td>
<td><%# Eval("Name") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:DataList>
</div>
</form>
</body>
</html>
[code=C#]
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataList1.DataSource = GetData();
DataList1.DataBind();
}
}
private DataTable GetData()
{
//新建表
DataTable dt = new DataTable(); //定义表结构
dt.Columns.Add("Id", typeof(System.Int32));
dt.Columns.Add("Name", typeof(System.String)); //添加新行
for (int i = 0; i <= 5; i++)
{
DataRow dr = dt.NewRow();
dr[0] = i;
dr[1] = "oec200" + i;
dt.Rows.Add(dr);
}
return dt;
}
[/code]
可问题是AJAX的方法我不会写,还有没有什么其他办法??
在repeater的模板中可以这样用,datalist没试过,应该是一样的<input name="C_NewsID" type="checkbox" id="C_NewsID" value="<%#Eval("ID") %>">
随便选中几个,提交页面 后台用 Request["C_NewsID"]得到是"1,2,3"这样的字符串再操作数据库就很方便了
如果是在页面的一个区域有个投票功能 ,如果点击checkbox 页面就刷新了 不是很好,所以建议用ajax做
我的这篇文章中有讲ajaxpro怎么用 有兴趣可以看下
但是似乎你的文章里所说的我感觉我并派不上用场嘛?我现在可以实现的是点不同的checkbox可以得到相应的id了,是参考了你的例子,现在我要做的就是我要根据得到的id去数据库里把相应的投票数增加,(因为我的数据都是数据库里来的)
function vote(obj)
{
alert(obj.value);
//可以得到value的值
//然后可以用ajax的方法 给该ID投一票
}
其中"用ajax的方法 给该ID投一票",我想通过数据库来完成,这样可以吗??
----
当然可以啊 ,我那个文章是讲Autocomplete的 ,不过提到了ajaxpro的用发
你可以在后台写个方法 根据传入的参数ID 去更新数据库
public string Vote(string id)
{
//执行数据库更新操作
}function vote(obj)
{
//调用后台的Vote方法
}
--------------js函数vote可以到的id值
function vote(obj)
{
//调用后台的Vote方法
var id=obj.value;
//使用Ajaxpro 具体用法可以看我那篇文章
var result=命名空间.类名.Vote(id).value; //result就是后台方法的返回值
}
现在还有一个小小的问题:function vote(obj)
{
var id = obj.value;
//然后可以用ajax的方法 给该ID投一票(调用C#方法)
//<%=Vote(id)%>;
selectVote.Vote(id);
}public void Vote(int id)
{
//执行数据库更新操作(后传给JS方法)
using (SqlConnection conn = new SqlConnection(str))
{
conn.Open();
SqlCommand comm = new SqlCommand("update voteDetail set cont=cont+1 where id='"+id+"'", conn);
comm.ExecuteNonQuery();
}
}
运行时报错:The name 'id' does not exist in the current context
为什么会说id不存在,不是我明明已经声明过了吗?(var id = obj.value;)??是不是我前台或者后台代码有错??谢谢!!
[email protected]