假设我有在我的数据库如下表:什么使用,而不是`命令参数属性`在`gridview`当我在客户端使用jQuery创建gridview?
Tbl_Persons:
Id Country Name
1 Australia Ben
2 Japan John
3 Korea Libby
4 Australia Raymond
我用下面的查询和使用DataTable
到Gridview
结果绑定。
select id,Country,Name
from tbl_persons
where country='Australia'
在gridview
我有两个Bound Columns
和1 template column
。 在模板列中,我通常会使用ImageButton
并使用Command Argumnet property
将ID field
指定为image button
。当用户点击浏览器中的imagebutton
时,我会让command argument value
切断对它的一些操作。
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:BoundField DataField="ountry" HeaderText="Country" />
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="ImageButton1" runat="server"
CommandArgument='<%# Eval("Id") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
正如你在运行模式知道什么时候用户在浏览器中查看的代码的源代码,因为他们在服务器上创建的command argument
值是无法观测。用户不能使用浏览器更改值,并将更改后的值发送到服务器。
但是gridview
是服务器端有回发。所以我使用jquery
并填写My gridview
,并在客户端添加tr
和td
标签。 对于ID field of my database
,因为我在客户端没有command argument
,我将Id
的每个TD
标签分配为Id field
。 但用户可以在浏览器中更改Id values
,并将无效数据发送到服务器,这是一场灾难。 这是一张我的代码:
script type="text/javascript">
function BindGridView() {
$.ajax({
type: "POST",
url: "Default.aspx/GetNames",
data: "{}",
contentType: "application/json",
dataType: "json",
success: function (data) {
for (var i = 0; i < data.d.length; i++) {
$("#NamesGridView").append("<tr><td id="+data.d[i].Id+">" + data.d[i].Country +
"</td><td>" + data.d[i].Name + "</td></tr>");
}
}
})
}
</script>
所以我能做些什么来防止用户更改值? 在客户端有没有什么方法像Command Argument?
任何想法......? – 2011-06-03 13:01:36