title: what to use instead of ` Command Argument property`in a` gridview` When I create the gridview in client side using jquery?
body: <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>