2016-03-24 67 views
0

我已經存儲proc使用樞軸(動態查詢),將返回動態列。 Like
從GridView後面的C代碼綁定動態列模板字段#

ItemId A   B    c 
------ --  --   -- 
1  A_Value1 B_Value1  C_Value1 
16  A_Value2 B_Value2  C_Value2 

這裏A,B,C是動態列。有時A只發生或者A,B,C,D,E等,因爲它的數據透視表。然後, 我將綁定該結果在gridview。

我的要求是,我想綁定結果gridview的模板字段與鏈接按鈕。因爲我想爲每列執行rowcommand事件。
我的命令參數應該是這樣的C列

CommandArgument = ColumnName+","+ItemID_Value; 


CommandArgument = "A,16"; 如何做到這一點。請幫助。

+0

AutoGenerateColumns可以爲您創建GridView列,但它們將是BoundFields。因此,您可能需要在代碼隱藏中手動創建字段(根據DataView的內容將TemplateField添加到GridView的Columns屬性中)。至於LinkBut​​tons,我不確定你想要他們在哪裏。在每個數據項上(例如A_Value1)?或僅在ItemId列上? – ConnorsFan

+0

是的我想鏈接每個數據項的按鈕。意味着A_Value1是鏈接按鈕,B_Value1是鏈接btn,所有列值都是除itemID列之外的鏈接按鈕。 – Singaravelan

+0

看看這個:http://stackoverflow.com/questions/12581088/how-to-add-templatefield-programmatically – ConnorsFan

回答

0

您已經回答:)

<asp:TemplateField HeaderText="A"> 
    <ItemTemplate> 
     <asp:LinkButton runat="server" ID="lnkModify" Text="Edit" CommandName="MyCommand"> 
     </asp:LinkButton> 
    </ItemTemplate> 
</asp:TemplateField> 
(在ASPX或直接)

而且OnRowDataBound

MyClass item = e.Row.DataItem as MyClass; 
LinkButton lnk = (LinkButton)e.Row.FindControl("lnkModify"); 
lnk.CommandArgument = "A," + item.Id; 

編輯:對不起,我現在他們DINAMIC列讀取。 兩種解決方案:

  1. 首先您需要始終擁有所有列。然後你可以像上面那樣編寫代碼,但是你有動態的HeaderTextCommandArgument可以讀HeaderText(或者相對列索引)。如果列不存在,則可以在LinkButton上使用Visible

  2. 如果你不知道列號,你可以建立你的數據結構並用AutoGenerateColumns="true"綁定數據。

如果你不需要分頁,你可以使用嵌套的Repeater(一個用於ABCDE列,一個用於行)。

希望它有幫助。

+0

對不起,我編輯了答案。你能否更新你的問題添加你的項目的數據/類結構? – Emanuele

+0

這就像autogenerateColumns = true,但所有值都像鏈接btn,但item_id列除外。當我們點擊鏈接btn時,我需要將兩個值(列名和相應的ItemID)傳遞給存儲過程procB。 – Singaravelan

+0

您可以連接您的數據綁定項目的兩個字段 – Emanuele

相關問題