假設我有在我的數據庫如下表:什麼使用,而不是`命令參數屬性`在`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