学员:ntwuhaohao提问时间:2008-10-13 13:41:10
1.在投票系统:对某明星进行投票,点上传之后,数据提交不到数据库里,设置断点,发现int starid = e.Item.ItemIndex;接收不到数据。不知哪里出错。
整体代码如下
protected void datalist1_update(object sender, DataListCommandEventArgs e)
{
int starid = e.Item.ItemIndex;
SqlConnection strconn = dbmange.getconn();
strconn.Open();
SqlCommand cmd = new SqlCommand("voteroom", strconn);
cmd.CommandType = CommandType.StoredProcedure;
......................
......................
......................
......................
}
2.投票页里有三个linkbutton控件,都设了CommandName属性,但并没有发面哪里调用它,设它有什么作用?
3。投票页里点了投票,相应的投票项就出来了,这是怎么实现的?
4。每次我提交的作业里面没有.sln文件,老师是怎么运行调试的,我如果这个项目文件夹拷到其它机子上,没有.sln文件,怎么调试啊?
回答人:polarstar (.NET学习顾问)回答时间:2008-10-14 02:14:44
1。int starid = e.Item.ItemIndex;所得到的是正在编辑的DataList元素的索引,不正确,应该是int starid = datalist1.DataKeys(e.Item.ItemIndex),得到正在编辑数据的标识,即数据库中用来表示记录唯一性的那个字段值,因为把DataList的DataKeyField设成了starid,所以可以得到这个starid。
2。在DataList中,命令Update、Delete、Cancel和Edit是固定的命令,他们会激活UpdateCommand、DeleteCommand、CancelCommand和EditCommand事件(GridView也有类似的行为,但有一点点区别),所以当你点击设置了CommandName的LinkButton后,就自动调用对应事件函数。你把CommandName="Update"改成
CommandName="Update1"它就不起作用了。
3。你点了“投票”后,相当于是点击了一个CommandName为Edit的LinkButton,如2所述,它会激发EditCommand事件函数,在这个事件函数中有datalist1.EditItemIndex = e.Item.ItemIndex,这就是设置DataList的这个数据为编辑状态,而我们在DataList中设置了<EditItemTemplate>……</EditItemTemplate>模板,当状态为“编辑”状态是,就会显示这个模板,所以投票项就出来了。
学员对该答案的评价 感谢各位老师