what to use instead of ` Command Argument property`in a` gridview` When I create the gridview in client side using jquery?
<p>Suppose I have following table in my database:</p>

<pre><code>Tbl_Persons: 
 Id   Country    Name    
 1    Australia  Ben   
 2    Japan      John
 3    Korea      Libby
 4    Australia  Raymond
</code></pre>

<p>I use following Query and bind the result using <code>DataTable</code> to a <code>Gridview</code>.</p>

<pre><code>select id,Country,Name 
       from tbl_persons
           where country='Australia'
</code></pre>

<p>In <code>gridview</code> I have two <code>Bound Columns</code> and 1 <code>template column</code>.
In template column I typically put an <code>ImageButton</code> and assign the <code>ID field</code> to <code>image button</code> using <code>Command Argumnet property</code>. And when user clicks on the <code>imagebutton</code> in the browser  I'll get the <code>command argument value</code> in sever an do some operations with it.</p>

<pre><code>&lt;asp:GridView ID="GridView1" runat="server"&gt;
            &lt;Columns&gt;
                &lt;asp:BoundField DataField="ountry" HeaderText="Country" /&gt;
                &lt;asp:BoundField DataField="Name" HeaderText="Name" /&gt;
                &lt;asp:TemplateField&gt;
                    &lt;ItemTemplate&gt;
                        &lt;asp:ImageButton ID="ImageButton1" runat="server" 
                            CommandArgument='&lt;%# Eval("Id") %&gt;' /&gt;
                    &lt;/ItemTemplate&gt;
                &lt;/asp:TemplateField&gt;
            &lt;/Columns&gt;
        &lt;/asp:GridView&gt;
</code></pre>

<p>As you know in runtime mode when user views the source of code in browser the values of <code>command argument</code> are not observable because they create in server. and user can't change the values using  the browser and send the changed values to the server.</p>

<p>But <code>gridview</code> is server side an has post back. So I use <code>jquery</code> and fill <code>My gridview</code> with appending <code>tr</code> and <code>td</code> tags in client side.
For <code>ID field of my database</code> because I don't have <code>command argument</code> in client side I assign the <code>Id</code> of each <code>TD</code> tag equals to the <code>Id field</code>.
But the user can change the <code>Id values</code> in the browser and send invalid data to the server and this is a disaster.
This is piece of my code:</p>

<pre><code>script type="text/javascript"&gt;
  function BindGridView() {
     $.ajax({
          type: "POST",
          url: "Default.aspx/GetNames",
          data: "{}",
          contentType: "application/json",
          dataType: "json",
          success: function (data) {
         for (var i = 0; i &lt; data.d.length; i++) {
                $("#NamesGridView").append("&lt;tr&gt;&lt;td id="+data.d[i].Id+"&gt;" + data.d[i].Country + 
                                            "&lt;/td&gt;&lt;td&gt;" + data.d[i].Name + "&lt;/td&gt;&lt;/tr&gt;");
             }
           }
          })
      }
&lt;/script&gt;
</code></pre>

<p>So what can I do to prevent user to changes the values?
Are there any ways something like Command Argument in client side?</p>
