Adding Item to html listbox using DataTable

Hello Experts,

currently I am using a asp listbox which get populated based on the user selection from the combo box.. instead of using asp listbox , I wanted to use a html listbox and populate .

I have the code below that I am currently using..

lstFS is asp listbox .. can someone help me how to use a html listbox instead.

Thanks
For Each dt_row As DataRow In dt.Rows
            varNotAvailable = 1
            varX = varX + 1
            If varPlcSrvc = "Site of Service" Then
                If varX Mod 2 <> 0 Then
                    varstrcmbfin = varstrcmbfin & dt_row("MKT_ID") & "/"
                Else
                    varstrcmbfin = varstrcmbfin & dt_row("MKT_ID")
                    lstFS.Items.Add(varstrcmbfin)
                    varstrcmbfin = ""
                End If
            Else
                lstFS.Items.Add(dt_row("MKT_ID"))
            End If
 
        Next

Open in new window

sanjaypandeyAsked:
Who is Participating?
 
samtran0331Connect With a Mentor Commented:
In the example below, select some items from the first listbox, then select something from the second listbox and the items in the first listbox will be deselected...
<%@ Page Language="VB" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        If Not Me.IsPostBack Then
            ListBox2.Attributes.Add("onclick", "javascript:document.forms[0]." & ListBox1.ClientID & ".selectedIndex='-1';")
        End If
    End Sub
</script>
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ListBox ID="ListBox1" runat="server" SelectionMode="multiple">
                <asp:ListItem>Apples</asp:ListItem>
                <asp:ListItem>Oranges</asp:ListItem>
                <asp:ListItem>Bananas</asp:ListItem>
            </asp:ListBox>
            <asp:ListBox ID="ListBox2" runat="server" SelectionMode="multiple">
                <asp:ListItem>Mangos</asp:ListItem>
                <asp:ListItem>Papayas</asp:ListItem>
                <asp:ListItem>Plantains</asp:ListItem>
            </asp:ListBox>
        </div>
    </form>
</body>
</html>

Open in new window

0
 
Ashish PatelCommented:
Are you coding in ASP.net page and not in code behind. As this can be done in Design view
0
 
spprivateCommented:
Response.write("<SELECT>")
For Each dt_row As DataRow In dt.Rows
            varNotAvailable = 1
            varX = varX + 1
            If varPlcSrvc = "Site of Service" Then
                If varX Mod 2 <> 0 Then
                    varstrcmbfin = varstrcmbfin & dt_row("MKT_ID") & "/"
                Else
                    varstrcmbfin = varstrcmbfin & dt_row("MKT_ID")
Response.write("<OPTION>"+varstrcmbfin +"</OPTION>")

                    lstFS.Items.Add(varstrcmbfin)
                    varstrcmbfin = ""
                End If
            Else
                lstFS.Items.Add(dt_row("MKT_ID"))
            End If
 
        Next
Response.write("</SELECT>")

HTH
0
Introducing Cloud Class® training courses

Tech changes fast. You can learn faster. That’s why we’re bringing professional training courses to Experts Exchange. With a subscription, you can access all the Cloud Class® courses to expand your education, prep for certifications, and get top-notch instructions.

 
samtran0331Commented:
sanjaypandey,

Why? the ASP.Net listbox will render the same html as a html listbox

spprivate,
Using response.write to build the html gives you no control over placement whatsoever, if you call that code from codebehind, it will actually render before the opening <html> tag...
0
 
sanjaypandeyAuthor Commented:
asvforce : asnwer to your question, I am doing it in the design view  ...

spprivate: how do I pre-place the html control and then refer it directly in the code?
0
 
Ashish PatelCommented:
sanjay,
just replace spprivate's block with your code block and everything should be good.
0
 
spprivateCommented:
You cannot refer a client side control (html control) from a server script unless it is made as run as server control option.
0
 
sanjaypandeyAuthor Commented:
the reason I was thinking to switching to html control rather asp:listbox is that I have two listbox and I wanted user to select item from one listbox at a time, when he select items from one , all the items from the 2 listbox should be delselected.

and I was not able to do this using asp:listbox without causing an autopostback... which I dont want.......

can you suggest any way by means of which i can achive my objective without causing postback.

thanks again
0
 
spprivateCommented:
You can use the javascript validation to do this.
I have done similar way back in 03.Let me see.
Javascript
function fundisable(val)
      {
       {
      document.getElementById("ddlOS").enabled =false;
      }
                 }

In codebehind Attributes.Add("onclick", " fundisable('" + strArg + "')");
0
 
Ashish PatelCommented:
Then its very simple, write an onChange event to the <asp:listbox with return=false; Also you can set autopostback to false in the properties

onChange="return false;"
0
 
samtran0331Commented:
any javascript you can wire up to an html listbox can be wired up to the same asp.net listbox...
if you had 2 html listboxes, how were you going to manage the de-selection of listbox2?
0
 
sanjaypandeyAuthor Commented:
Thanks Samtran,

this is what I exactly needed, I was under the impression that I will not be able to use javascript with asp control, I tried using javascript and was getting error... thanks so much,
0
 
sanjaypandeyAuthor Commented:
Thanks, this is what I was looking for, I appreciate your help.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.