2012-07-23 100 views
0

我不知道這是多麼困難,但我有checkboxList與從數據庫中填充的值。如何將db字段添加到url字符串中?

這是標記:

<asp:CheckBoxList runat="server" ID="sects"> 

的字段名是文檔列表,我讀出的值到這個:

While objReader.Read() 
    With objReader 
    Dim li As New ListItem(objReader(0).ToString()) 
    sects.Items.Add(li) 
    End With 
End While 

它的偉大工程至今。在很大程度上感謝我在這裏得到的巨大幫助。

但是,我們希望將與sects.Items.Add(li)關聯的值鏈接到一個url中。

的URL如下:

http://default.html我們希望,所以它看起來像這樣來連接它:

http://default.html?parts="+sects.Items.Add(li)+"&docs=answers&name=meter.zip" 

這是行不通的。我得到一個錯誤,「這不會產生一個值

我們正在努力做到的是包含URL字符串的URL中的教派值來填充CheckBoxList的。

任何想法如何得到這個工作?

對不起傢伙,我只是不停地回來更多我第一次嘗試,雖然解決在來這裏之前

+0

你要選擇單個值?或者,如果他們選擇多個項目,你想要捕獲它們嗎?爲什麼把它放在網址上?對於多個值,請考慮一個Session對象。 – GrayFox374 2012-07-23 17:19:13

+0

是的,@ GrayFox374;很高興再次收到您的來信。 用戶可以選擇一個或多個網址。這個想法是,如果他們點擊了任何一個網址,它會以預先格式化的佈局顯示這些部分。 根據你提供的2個極好的解決方案,他們將部分取決於點擊按鈕,不是嗎? 就像您之前提供的幫助(再次),而不是顯示文本,我們希望他們現在顯示爲鏈接。 – Kenny 2012-07-23 17:54:44

+0

是的,該代碼應放置在您希望用於移動到default.html的按鈕或鏈接事件中,該事件應該是default.aspx。我不明白你的意思,「我們希望他們現在可以顯示爲鏈接。請澄清。 – GrayFox374 2012-07-23 17:59:47

回答

0

好吧,我想我更好地理解。我已經移除了鏈接按鈕,並且已經更改了列表項,因此顯示的文本是一個包含其中的數據庫字段的URL,作爲URL參數。該值本身仍然是數據庫字段。但是如果我可能問,這是什麼樣的設計?它看起來很不穩定。你可以導航到這些頁面提供不同的數據?你想允許多個選擇,但你怎麼能通過這條路線來考慮這一點。如果您不希望用戶能夠進行多項選擇,則應該使用drop down列表。我希望這對你有用,但我懷疑這個要求背後的邏輯及其實施。

標記:

<asp:CheckBoxList runat="server" ID="sect" CssClass="checkAll" AutoPostBack="true" > 
</asp:CheckBoxList> 

代碼背後:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Not Page.IsPostBack Then 
     Dim strSQL As String = "SELECT AppealNumber FROM Appeals" 
     Dim connStr As String = ConfigurationManager.ConnectionStrings("connstr").ConnectionString 
     Dim conn As New SqlConnection(connStr) 
     Dim cmd As New SqlCommand(strSQL, conn) 
     Dim objReader As SqlDataReader 
     conn.Open() 
     objReader = cmd.ExecuteReader() 
     ' ||||| Loop through the Reader to retrieve data  
     ' ||||| and set each checkbox to appropriate data from datasource 
     While objReader.Read() 
      With objReader 
       Dim li As New ListItem("Default.aspx?parts=" + objReader(0).ToString(), objReader(0).ToString()) 
       sect.Items.Add(li) 
      End With 
     End While 
    End If 
End Sub 
+0

對不起,我錯過了你在這裏提出的觀點。我很興奮,我忘了通讀。他們說他們想要的是將db值添加到複選框值。 然後,用戶將選擇一個或多個複選框,然後點擊「獲取已檢查的項目」之類的值,然後這些值將被附加到URL以形成具有參數的完整URL,然後這些參數將被重定向到另一個頁面以打印所有選定的文檔。 我覺得在複選框中添加url會更容易。我會發現如果我搞砸了。 – Kenny 2012-07-23 20:48:05

+0

是的,我想你想要我的第一個解決方案。這不會附加,但那是。祝你好運。 – GrayFox374 2012-07-23 20:56:53

0

嘗試:

sects.Items(//Index of Item).ToString() 

http://default.html?parts="+sects.Items(//Index of Item).ToString()+"&docs=answers&name=meter.zip" 

或者:(它已經有一段時間了ASP,但我覺得這樣的事情是菱)

sects.SelectedValue.ToString() 

的部分sects.Items.Add(li)是將對象添加到CheckBoxList的

+0

hi @Jmyster, 你是正確的sects.Items.Add(li)將對象添加到CheckBoxList。 如何將此sects.Items.Add(li)替換爲url,以便現在url顯示在checkboxlist控件中? 感謝您的及時迴應。 – Kenny 2012-07-23 17:23:34

0
string urlappend = null; 
    for (int i = 0; i < CheckBoxList1.Items.Count; i++) 
    { 
     urlappend += CheckBoxList1.Items[i].Value + "_"; 
    } 

您需要通過項目環在複選框列表中,並將它們的值附加爲字符串,然後將該字符串添加到URL中,這樣可以獲得所有值。同樣在上面的代碼中,我使用「_」作爲分隔符來標識每個項目值。在情況下,如果你只想要選擇的項目

那麼你可以添加以下條件

for (int i = 0; i < CheckBoxList1.Items.Count; i++) 
    { 
     if(CheckBoxList1.Items[i].Selected) 
     urlappend += CheckBoxList1.Items[i].Value + "_"; 

    }