环境:vs2019 里的Net.asp开发
情况1
:我做的是考试系统里面的一个考试发布界面
用的是Datalist
预期结果
:点击第1行的发布就读取第一行的试卷编号,然后发布。点击第2行的发布就读取第2行的试卷编号,然后发布。
实际结果
:点击发布是没反应的,原因是onclick在Datalist的情景下无法判断是哪一行的button(你写代码的时候只写了一个button)
解决方法
:
这时候我们在.ASP文件里,给Datalist加一个OnItemCommand=“DataList1_ItemCommand”;
给button加上一个属性CommandName=“名字_1”,还有一个属性CommandArgument=’<%#Eval(“试卷编号”) %>’,当然这些操作之前你要先完成数据绑定。
最后,我再用Session[“试卷编号_发布”]实现页面之间的数据传递
在.cs文件里添加一个方法
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "名字_1")//此处判断响应的组件是不是按钮
{
Session["试卷编号_发布"] = e.CommandArgument.ToString();//此处将你所点击按钮的那一行的数据保存起来。
//跳转至选择员工界面进行发布
Response.Redirect("发布考试_选择员工.aspx");
}
}
历程
:想了一个晚上都找不到办法,问了老师老师直接让我去实验室找那的
同学帮我解答,我一想这哪里好意思啊,万一很简单我不是尴尬死,我就说,课本上一定有,我就找datalist,datalist里面没有command相关的,我就去翻buttom这一页的,发现还有个CommanArgument也可以传递参数。现在我做的Datalist里每一行结尾都有一个button,我就想能不能每一行的button里的CommanArgument给它弄一个本行的变量,例如’<%#Eval(“试卷编号”) %>’,如果可以那不就可以用来传递一行的数据啦?试试看果然可以。