2013-03-19 67 views
0

我有一個gridview,我正在動態地(通過代碼)添加兩個按鈕「編輯和刪除」。這是我的HTML代碼:如何在gridview中使用jquery或javascript獲取DataKey值?請閱讀代碼以及之前回答

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" CellPadding="4" 
       BorderWidth="1px" ForeColor="#333333" GridLines="None"> 
       <AlternatingRowStyle BackColor="White" /> 
       <FooterStyle BackColor="#990000" ForeColor="White" Font-Bold="True" /> 
       <HeaderStyle Height="30px" BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
       <PagerStyle ForeColor="#333333" HorizontalAlign="Center" BackColor="#E2E2E2" /> 
       <RowStyle CssClass="test" BackColor="#E2E2E2" Height="25px" BorderWidth="1px" ForeColor="#333333" /> 
       <SelectedRowStyle BackColor="#E2E2E2" Font-Bold="True" ForeColor="Navy" /> 
       <SortedAscendingCellStyle BackColor="#FDF5AC" /> 
       <SortedAscendingHeaderStyle BackColor="#4D0000" /> 
       <SortedDescendingCellStyle BackColor="#FCF6C0" /> 
       <SortedDescendingHeaderStyle BackColor="#820000" /> 
      </asp:GridView> 

這是我的代碼代碼背後::

private void BindData(DataTable dtColumns) 
{ 
    GridView1.Columns.Clear(); 
    String Query = ""; 
    DataTable dtSearchItems = (DataTable)ViewState["dtSearchItems"]; 
    String PrimaryKey = ""; 
    if (ViewState["PrimaryKey"] != null) 
    { 
     PrimaryKey = ViewState["PrimaryKey"].ToString(); 
    } 
    if (dtColumns != null) 
    { 
     String Columns = ""; 
     if (dtColumns.Rows.Count > 0) 
     { 
      foreach (DataRow dr in dtColumns.Rows) 
      { 
       Columns += dr["OrignalColumn"].ToString() + ","; 
      } 
      Columns = Columns.TrimEnd(','); 
      Query = "Select " + PrimaryKey + " , " + Columns + " from " + TableName + " where 1 = 1 "; 
     } 
     else 
     { 
      Query = "Select *," + PrimaryKey + " from " + TableName + " where 1 = 1 "; 
     } 
    } 
    else 
    { 
     Query = "Select *," + PrimaryKey + " from " + TableName + " where 1 = 1 "; 
    } 
    if (dtSearchItems != null) 
    { 
     if (dtSearchItems.Rows.Count > 0) 
     { 
      foreach (DataRow dr in dtSearchItems.Rows) 
      { 
       Query += " " + dr["AndOr"].ToString() + " " + dr["ColumnName"].ToString() + " " + ClsStaticSearch.ReturnOperationSymbol(dr["Operation"].ToString(), dr["Value"].ToString()); 
      } 
     } 
     else 
     { 
      Query = Query; 
     } 
    } 

    DataTable dtOutPutResult = new DataTable(); 
    SqlConnection con = new SqlConnection(); 
    con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["cn"].ConnectionString; 
    SqlCommand cmd = new SqlCommand(Query, con); 

    if (con.State == ConnectionState.Closed) con.Open(); 
    dtOutPutResult.Load(cmd.ExecuteReader()); 
    GridView1.DataKeyNames = new string[] { PrimaryKey }; 

    if (dtOutPutResult.Rows.Count > 0) 
    { 
     foreach (DataColumn dcDtOutPutResult in dtOutPutResult.Columns) 
     { 
      foreach (DataRow drDtColumns in dtColumns.Rows) 
      { 
       if (drDtColumns["OrignalColumn"].ToString() == dcDtOutPutResult.ColumnName) 
       { 
        BoundField bfield = new BoundField(); 
        bfield.DataField = dcDtOutPutResult.ColumnName; 
        bfield.HeaderText = drDtColumns["DisplayColumn"].ToString(); 
        GridView1.Columns.Add(bfield); 
       } 
      } 
     } 

     TemplateField t = new TemplateField(); 
     DynamicTemplate mt = new DynamicTemplate(ListItemType.Item); 

     Button btnEdit = new Button(); 
     btnEdit.ID = "btnEdit"; 
     btnEdit.Visible = true; 
     btnEdit.OnClientClick = "return confirm_Edit();"; 
     btnEdit.Text = " Submit"; 
     btnEdit.CssClass = "button"; 
     btnEdit.Style.Add("margin-right", "5px"); 
     mt.AddControl(btnEdit, "Text", "Edit"); 

     Button btnDelete = new Button(); 
     btnDelete.ID = "btnDelete"; 
     btnDelete.OnClientClick = "return confirm_delete();"; 
     btnDelete.Visible = true; 
     btnDelete.Text = " Submit"; 
     btnDelete.CssClass = "button"; 
     mt.AddControl(btnDelete, "Text", "Delete"); 

     t.ItemTemplate = mt; 
     t.HeaderText = "Activity"; 
     GridView1.Columns.Add(t); 
     GridView1.DataSource = dtOutPutResult; 
     GridView1.DataBind(); 
     lblMessage.Visible = false; 
    } 
    else 
    { 
     GridView1.DataSource = dtOutPutResult; 
     GridView1.DataBind(); 
     lblMessage.Visible = true; 
     lblMessage.Style.Add("Color", "Red"); 
     lblMessage.Text = "No Record Found."; 
    } 
    cmd.Dispose(); 
} 

我想要做的是::

我想創建一個高級搜索的通用模塊,這幾乎是完整的,現在我想要做的是:我想添加編輯和刪除功能到網格中。因爲我需要獲取網格的DataKey值,每個按鈕的點擊只能通過javascript或jquery,因爲如果頁面被回發,按鈕將不可見。

請幫幫我。使用hiddenfield獲取價值

+0

請評論downvoters ............. – 2013-11-22 04:13:21

回答

3

是對於這種情況

<asp:TemplateField> 
    <ItemTemplate> 
    <asp:HiddenField ID="key" runat="server" Value='<%#Eval("ID") %>' /> 
    </ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField> 
    <ItemTemplate> 
    <a href="#" id="getID">Read data key</a> 
    </ItemTemplate> 
</asp:TemplateField> 

很常見的解決方案腳本

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("table[id*=gridviewid] a[id*=getID]").click(function() { 
      alert($(this).closest("tr").find("input[type=hidden][id*=key]").val()); 
     }); 
    }); 
</script> 

如果你覺得這乏味的,你可以在下面找到類似的問題和解決方案:

With Jquery

On mouse over

Code project article

Fetching selected row datakey - stackoverflow

+0

你讀過我的所有代碼????????? ??????????請先查看,然後回答 – 2013-03-19 09:04:45

+0

您的標題沒有解釋有關場景或提及任何特定情況。在這種情況下,如果你希望所有人閱讀你的40行代碼而不是回答它,最好在標題中提及它。 – Sakthivel 2013-03-19 10:05:04

+0

@codebrain:如果他的問題需要更多解釋或代碼,那麼可以將其添加到問題中。 – 2013-11-21 11:10:42

相關問題