2011-03-23 43 views
1

我有一個Gridview這樣。爲未知Gridview數據源添加所有行復選框

<asp:GridView ID="GridView1" runat="server" 
     Width="16px" BackColor="White" BorderColor="#E7E7FF" 
     BorderStyle="None" BorderWidth="1px" CellPadding="3" 
     GridLines="Horizontal" Height="16px" > 
     <AlternatingRowStyle BackColor="#F7F7F7" /> 
     <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" /> 
     <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" /> 
     <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" /> 
     <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" /> 
     <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" /> 
     <sortedascendingcellstyle backcolor="#F4F4FD" /> 
     <sortedascendingheaderstyle backcolor="#5A4C9D" /> 
     <sorteddescendingcellstyle backcolor="#D8D8F0" /> 
     <sorteddescendingheaderstyle backcolor="#3E3277" /> 

<SortedAscendingCellStyle BackColor="#F4F4FD"></SortedAscendingCellStyle> 

<SortedAscendingHeaderStyle BackColor="#5A4C9D"></SortedAscendingHeaderStyle> 

<SortedDescendingCellStyle BackColor="#D8D8F0"></SortedDescendingCellStyle> 

<SortedDescendingHeaderStyle BackColor="#3E3277"></SortedDescendingHeaderStyle> 
    </asp:GridView> 

程序上,我增加了一個數據源這個Gridview

protected void SendToGridview_Click(object sender, EventArgs e) 
    { 
     Calculate.Visible = true; 
     MV_Label.Visible = true; 
     RISK_Label.Visible = true; 

     string strQuery; 
     string ConnectionString = ConfigurationManager.ConnectionStrings["ora"].ConnectionString; 

     OracleConnection myConnection = new OracleConnection(ConnectionString); 

     strQuery = @"SELECT A.HESAP_NO, A.TEKLIF_NO1 || '/' || A.TEKLIF_NO2 AS TEKLIF, A.MUS_K_ISIM AS MUSTERI, 
        B.MARKA, C.SASI_NO, C.SASI_DURUM, D.TAS_MAR, NVL(RISK_SASI(A.TEKLIF_NO1, A.TEKLIF_NO2, C.URUN_SIRA_NO, C.SIRA_NO),0) AS RISK, 
        NVL(MV_SASI(A.TEKLIF_NO1, A.TEKLIF_NO2, C.SIRA_NO, C.URUN_SIRA_NO, SYSDATE),0) AS MV 
        FROM S_TEKLIF A, S_URUN B, S_URUN_DETAY C, KOC_KTMAR_PR D 
        WHERE A.TEKLIF_NO1 || A.TEKLIF_NO2 = B.TEKLIF_NO1 || B.TEKLIF_NO2 
        AND A.TEKLIF_NO1 || A.TEKLIF_NO2 = C.TEKLIF_NO1 || C.TEKLIF_NO2 
        AND B.SIRA_NO = C.URUN_SIRA_NO 
        AND B.DISTRIBUTOR = D.DIST_KOD 
        AND B.MARKA = D.MARKA_KOD 
        AND B.URUN_KOD = D.TAS_KOD "; 

     string param = ""; 
     foreach (ListItem l in CheckBoxList1.Items) 
     { 
      if (l.Selected) 
      { 
       param += string.Format("'{0}'", l.Value); 
       param += ","; 
      } 
     } 
     param = param.Remove(param.Length - 1); 

     strQuery = strQuery + " AND A.HESAP_NO IN (" + param + ")"; 

     OracleCommand myCommand = new OracleCommand(strQuery, myConnection); 
     myCommand.CommandType = System.Data.CommandType.Text; 
     myCommand.Connection = myConnection; 

     myCommand.CommandText = strQuery; 

     myConnection.Open(); 

     OracleDataReader dr = myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection); 

     GridView1.DataSource = dr; 
     GridView1.DataBind(); 
     GridView1.Visible = true; 

     myConnection.Close(); 
    } 

這是我的Gridview外觀;

enter image description here

我想是的,我想以後RISK柱和MV欄添加複選框列。

我的意思是,列的樣子,HESAP_NOTEKLIFMUSTERI馬爾卡SASI_NOSASI_DURUMTAS_MAR風險(的CheckBox)MV(複選框)。 Totaly應該是列。

而且我希望所有複選框都被選中爲默認值。

我該怎麼做?

我讀了this文章,但在本文中Gridview是一個普通的數據源。我添加程序化。

+1

的GridView是好的,可以快速輸出一些數據,但如果你計劃要嚴重,我建議建立自己的網格。當你在做它時,幫你一個忙,發現一個ORM。 – 2011-03-23 22:56:19

回答

2

你將不得不轉AutoGenerated列關閉,代替上定義的:

<asp:GridView ID="GridView1" runat="server" Width="16px" BackColor="White" 
    BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" 
    CellPadding="3" GridLines="Horizontal" Height="16px" AutoGenerateColumns="false"> 

    <!-- put your style stuff here --> 

    <asp:BoundField HeaderText="Text" DataField="HESAP_NO" /> 
    <asp:BoundField HeaderText="Text" DataField="TEKLIF" /> 
    <asp:BoundField HeaderText="Text" DataField="MUSTERI" /> 
    <asp:BoundField HeaderText="Text" DataField="MARKA" /> 
    <asp:BoundField HeaderText="Text" DataField="SASI_NO" /> 
    <asp:BoundField HeaderText="Text" DataField="SASI_DURAM" /> 
    <asp:BoundField HeaderText="Text" DataField="TAS_MAR" /> 
    <asp:BoundField HeaderText="Text" DataField="RISK" /> 
    <asp:BoundField HeaderText="Text" DataField="Text" /> 

    <asp:CheckBoxField DataField="NameCheckBoxField1" HeaderText="NameCheckBoxField1" /> 

    <asp:BoundField HeaderText="Text" DataField="MV" /> 

    <asp:CheckBoxField DataField="NameCheckBoxField2" HeaderText="NameCheckBoxField2" /> 

</asp:GridView> 

你還需要改變你的SQL返回兩個字段的CheckBoxField可以映射到。這些字段應該包含一個真正爲所有情況設置的位域。這將允許數據自動綁定到CheckBoxField並默認進行檢查。

EG:

SELECT 
    -- all our fields 
    'NameCheckBoxField1' = 0x1, 
    'NameCheckBoxField2' = 0x1 
FROM 
    -- etc... 
+0

@Kesley你是絕對正確的!謝謝。 – 2011-03-24 07:26:48

相關問題