2011-03-23 28 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

相关问题