2012-07-23 60 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 + "_"; 

    }