2011-10-10 30 views
0

我剛開始進入VB.NET編程,並設計了一個簡單的網頁,其下拉列表(從SQL動態讀取)填充GridView只顯示顏色的公式。它涉及專門塗料的顏色混合配方。公式本身具有由一列中的分號分隔的單個部分,我希望將此字符用作換行符,以便每個公式部分都顯示在GridView單元格內的單獨行中。我嘗試了很多方法來替換,拆分等,但遇到了一個障礙。在哪裏/如何添加代碼來執行此替換?我想用動態gridview代替分號

這裏是我的代碼,因爲它位於:

<body> 
    <form id="form1" runat="server"> 
     <div> 
      <asp:ImageButton ID="ImageButton1" runat="server" 
          AlternateText="Home Page" Height="46px" 
          ImageUrl="~/Images/Block_Tagline.jpg" 
          PostBackUrl="~/Default.aspx" Width="140px" /> 
      <br /> 
      <asp:LoginName ID="LoginName" 
          FormatString="Currently logged in as {0}" 
          runat="server" 
          ForeColor="#009933" /> 
      <br /> 
      <br /> 
      <br /> 
      Choose Your Color: 
      <asp:DropDownList ID="DropDownList1" runat="server" 
           AutoPostBack="true" 
           OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> 
      </asp:DropDownList> 
      <br /> 
      <br /> 
      <asp:GridView ID="ColorGridView" runat="server" 
          Width="100%" BackColor="White" 
          BorderColor="#E7E7FF" BorderStyle="None" 
          BorderWidth="1px" CellPadding="3" 
          GridLines="Horizontal"> 
       <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" /> 
       <PagerStyle ForeColor="#4A3C8C" HorizontalAlign="Right" 
          BackColor="#E7E7FF" /> 
       <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" 
            ForeColor="#F7F7F7" /> 
       <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" 
          ForeColor="#F7F7F7" /> 
       <AlternatingRowStyle BackColor="#F7F7F7" /> 
      </asp:GridView> 
      <span id="Message" runat="server"/> 
      <b></b> 
      <br /> 
      <asp:Button ID="btnEdit" runat="server" 
         Text="Edit/Add/Delete Colors" 
         PostBackUrl="~/Edit/EditColors.aspx" /> 
     </div> 
    </form> 
</body> 

代碼背後:

Partial Class _Default 
     Inherits System.Web.UI.Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load 

     If Not IsPostBack Then 
      Dim username As String = System.Security.Principal.WindowsIdentity.GetCurrent().Name 
      DropDownList1.Items.Insert(0, New ListItem("---Select---")) 

      FillDropDownList() 
     End If 
    End Sub 

    ' Show data in GridView 
    Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) 

     Dim s As String = WebConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString 
     Dim con As SqlConnection = New SqlConnection(s) 

     con.Open() 

     Dim cmd As SqlCommand = New SqlCommand("SELECT * from z_md_ColorFormulas where BlankColor='" + DropDownList1.SelectedItem.ToString() + "'", con) 
     Dim dr As SqlDataReader = cmd.ExecuteReader() 

     ColorGridView.DataSource = dr 
     ColorGridView.DataBind() 

     dr.Close() 
     con.Close() 
    End Sub 

    Public Sub FillDropDownList() 

     Dim s1 As String = WebConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString 
     Dim con1 As SqlConnection = New SqlConnection(s1) 

     con1.Open() 

     Dim cmd1 As SqlCommand = New SqlCommand("Select BlankColor from z_md_ColorFormulas", con1) 
     Dim dr1 As SqlDataReader = cmd1.ExecuteReader() 

     While dr1.Read() 
      DropDownList1.Items.Add(dr1(0).ToString()) 
     End While 

     dr1.Close() 
     con1.Close() 
    End Sub 
+0

我開始回答你的問題,但後來意識到我不知道你想要做什麼根據你的描述。你能澄清嗎?你說你的數據庫中的1列用分號分隔,例如:'Red; Blue; Green'?你是否需要遍歷返回數據集的每一列中的每一組顏色? –

+0

這是**超級刺激**閱讀你的問題與代碼內的所有空行。不要這樣寫代碼。 –

+0

我很抱歉這個網頁在我的代碼中放置額外的行,它不像VS中那樣。 – user988265

回答

0

只是爲了充實你的答案user988265我假設你的意思是使用代碼:

<asp:TemplateField HeaderText="Colours"> 
    <ItemTemplate> 
     <%# Eval("Colour").ToString().Replace(";","<br />") %> 
    </ItemTemplate> 
</asp:TemplateField> 

當我需要類似的東西時爲我工作。想知道是否有可能讓這個填充下拉列表?