how to display items in listbox - c#

How to display list of items in list box while choose a particular item in dropdown list.
example: thiru is a developer he done some modules.
in dropdown list has a list of developers while choose thiru in this list i want to display a what are all the modules completed by thiru that can be listed in listbox
I am using Visual Studio 2008,C# with ASP.Net
Thanks

If your data source is just a List or similar, you can simply do the following:
myListBox.DataSource = myDataSource;
myListBox.DataBind();
If your datasource is a class or list of classes, you need to specify which property to display and which to set as the value.
As above:
myListBox.DataSource = myDataSource;
myListBox.DataTextField = "MyPropertyNameOnMyClass"; //This will be displayed
myListBox.DataValueField = "MyValuePropertyOnMyClass";
myListBox.DataBind();

On the listbox databind your items to a datasource and add a parameter with the value from you drop down list.
This is roughly what you need to do.
<form id="form1" runat="server">
<div>
<asp:ListBox ID="ListBox1" runat="server" DataSourceID="listDataSource"
DataTextField="Field" DataValueField="Field"></asp:ListBox>
<asp:SqlDataSource ID="listDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:XXXX %>"
SelectCommand=
"SELECT [Field] FROM [LisotOfModules] WHERE ([DevID] = #DevID)">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="DevID"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</div>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
DataSourceID="ddlDatasource" DataTextField="DevID"
DataValueField="DevID">
</asp:DropDownList>
<asp:SqlDataSource ID="ddlDatasource" runat="server"
ConnectionString="<%$ ConnectionStrings:XXX %>"
SelectCommand="SELECT [DevID] FROM [Developers]">
</asp:SqlDataSource>
</form>

Related

Preloading a SQL databound listview in ASP.NET

I've been looking online for a while and I may not be asking my question right but I can't find what I am looking for.
I have a dropdownlist on a web form that is databound to a SQL select statement that returns 3 items. I appended the list with a blank item at the top so that I am not selecting the other options on page load.
I also have a listview that has a ControlParameter of the DDL.
What I want to do is when the page loads to have all items selected instead of none. Do I need to set Selected to True on each of the items in the list and how would I do that if the information is fetched from a SQL query.
A snippet of the code with the queries:
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSourceDockNumber"
DataTextField="DockID" DataValueField="DockID"
AutoPostBack="True" AppendDataBoundItems ="true">
<asp:ListItem Selected="False" Text="" Value=""></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSourceDockNumber" runat="server"
ConnectionString="<%$ ConnectionStrings:MarinaConnectionString %>"
SelectCommand="SELECT DISTINCT [DockID] FROM [Slip]">
</asp:SqlDataSource>
<br />
<asp:SqlDataSource ID="SqlDataSourceAvailSlips" runat="server"
ConnectionString="<%$ConnectionStrings:MarinaConnectionString %>"
SelectCommand="SELECT * FROM [avilableSlips] WHERE ([DockID] = #DockID)">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="DockID"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>

"Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control"

Pretty sure I know why I'm getting the error, just not sure how to go about fixing it. In a FormView ItemTemplate I've got a Label control for the Project ID# bound to the FormView's SQLDatasource. I've also got a DropDownList whose SQLDatasource I've got tied to the Label.Text as a ControlParameter. I am guessing since the Label control isn't bound yet, that's causing my DDL to kick out that error.
ASPX
<asp:FormView ID="FvChangeOrder" runat="server" DataKeyNames="ProjectChangeOrderID"
DataSourceID="FvChangeOrderSQL" OnItemCommand="FvChangeOrder_OnItemCommand"
OnDataBound="FvChangeOrder_OnDataBound">
<ItemTemplate>
<div>Project #: </div>
<div>
<asp:Label ID="LblProjectID" runat="server" Text='<%# Bind("ProjectID") %>' /></div>
<div>Shipment #: </div>
<div>
<asp:DropDownList runat="server" ID="DdlShipment" DataSourceID="DdlShipmentSQL"
SelectedValue='<%# Bind("ProjectShipmentID") %>' DataValueField="ProjectShipmentID"
DataTextField="ShipmentNo" Enabled="False" />
</div>
...
</ItemTemplate>
</asp:FormView>
<asp:SqlDataSource ID="FvChangeOrderSQL" runat="server"
ConnectionString="<%$ ConnectionStrings:ProjectLogicTestConnectionString %>"
SelectCommand="SELECT [ProjectID], [ProjectChangeOrderID], [ProjectShipmentID], [SeqNo],
[Date], [EnteredBy_UserID], [Source], [Initiator], [Reason], [ReasonNotes],
[ApprovalCode], [Description], [NumPanels], [Amount], [IsCommissionable], [DateDue],
[DateRecd], [Status]
FROM [tblProjectChangeOrder] WHERE ([ProjectChangeOrderID] = #PCOID)">
<SelectParameters>
<asp:QueryStringParameter Name="PCOID" QueryStringField="PCOID" Type="Int32"/>
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="DdlShipmentSQL" runat="server"
ConnectionString="<%$ ConnectionStrings:ProjectLogicTestConnectionString %>"
SelectCommand="SELECT pco.ProjectShipmentID, ps.ShipmentNo FROM tblProjectChangeOrder pco
LEFT JOIN tblProjectShipment ps ON pco.ProjectShipmentID = ps.ProjectShipmentID
WHERE pco.ProjectID = #ProjectID">
<SelectParameters>
<asp:ControlParameter ControlID="FvChangeOrder$LblProjectID"
Name="ProjectID" PropertyName="Text"/>
</SelectParameters>
</asp:SqlDataSource>
Would I be better off leaving out the WHERE and ControlParameter on the DDL SQLDatasource and changing the DDL's SQL Source in codebehind on the OnDataBound method of the FormView?
Think I got it worked out. I changed the ControlParameter to just Parameter Type="String" and on Form_Load set a Label to FvChangeOrder.FindControl("LblProjectID"), assigned LblProject.Text to a string, then passed that as the DefaultValue for the Select Parameter.
On an semi-related problem I had to remove the SelectedValue on the markup side and handle SQLCommand in the Form_Load for the DDL SelectedValue. Probably a bad dataset but I kept getting an error that the value in the field wasn't in the List or something like that. There are multiple Change Orders for a given project that have NULL values for the ShippingID.
Anywho, all is working on the ItemTemplate side. Now to see if I can keep everything working on the EditItemTemplate. :P

Putting dynamic string parameter in drop down menu server controls

I am new to .net/c# and visual studio. I have been looking all over the internet for an answer but couldn't find it. Thanks for your help.
I'm populating a drop down list from a database table, I want to pass a dynamic parameter to the asp server control (the logged in persons username). The 2 areas I want to put this dynamic string I added PUT_LOGGED_IN_USERNAME_HERE".
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource1" DataTextField="Name" DataValueField="PK_Task" AppendDataBoundItems="true">
<asp:ListItem Selected="True">Supportive</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
SelectCommand="SELECT [PK_Task], [Name] FROM [Task] WHERE ([PointPerson] LIKE '%' + #PointPerson + '%') AND [Status] LIKE 'Done'">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="PUT_LOGGED_IN_USERNAME_HERE" Name="PointPerson"
QueryStringField="PUT_LOGGED_IN_USERNAME_HERE"" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
How do I accomplish this?
I found the code to display username:
<%= Page.User.Identity.Name %>
However it is not working when I use it as shown:
<asp:QueryStringParameter DefaultValue="<%= Page.User.Identity.Name %>" Name="PointPerson"
QueryStringField="<%= Page.User.Identity.Name %>"" Type="String" />
You can access properties of SqlDataSource, including Parameters in code behind, like so:
SqlDataSource1.SelectParameters["PointPerson"].DefaultValue = "User";

How to set initial value for dropdownlist while using sqldatasource as binding

I have 2 dropdownlist, which are bound to a SQLDataSource and value of 2nd dropdownlist is based on 1st dropdownlist. The problem is that by default dropdownlist are displaying actual values. I put initialvalue in dpsem so, it's working correctly.but when i do same in dpsubj dropdownlist it is showing previous value also.
If I select dpsem--4 then dpsubj should be A,B,C, and if if i select dpsem--6 then dpsubj should be D,E,F. But it is displaying A,B,C,D,E,F...
I am knowing that it is problem related to Autopostback...
<asp:DropDownList ID="dpsem" runat="server" Height="28px"
Width="99px" AutoPostBack="True" DataSourceID="selectsemester"
DataTextField="sem_no" DataValueField="sem_no" AppendDataBoundItems="true">
<asp:ListItem Selected="True" Value="0">-select</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="dpsubj" runat="server" Height="28px"
Width="99px" AutoPostBack="True" DataSourceID="Selectscode"
DataTextField="scode" DataValueField="scode" AppendDataBoundItems="true">
<asp:ListItem Selected="True" Value="0">-select</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="Selectscode" runat="server"
ConnectionString="<%$ ConnectionStrings:AttendenceManagementConnectionString %>"
SelectCommand="SELECT DISTINCT [scode] FROM [Semester_Wise_Subject] WHERE (([branch_name] = #branch_name) AND ([sem_no] = #sem_no))">
<SelectParameters>
<asp:ControlParameter ControlID="lbdept" DefaultValue="IT" Name="branch_name"
PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="dpsem" DefaultValue="6" Name="sem_no"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="selectsemester" runat="server"
ConnectionString="<%$ ConnectionStrings:AttendenceManagementConnectionString %>"
SelectCommand="SELECT DISTINCT [sem_no] FROM [Batch_year]">
</asp:SqlDataSource>
You should use dpsubj.Items.Clear().. and then again load the filtered data on selectedindexchanged it will first delete all teh previous records in dpsubj dropdown and then use code to load value in dpsubj
I believe you have to create a SelectedIndexChanged event on the first drop down and have that event cause a databind on the second drop down. Also by default if you don't want the second drop down to display data get rid of the default parameter values.
If you are doing anything with ajax you also want to make sure that the first drop down updates the second in your script manager as well.
set AppendDataBoundItems="false" on dpsubj
since you set this property as true, items are not cleared before data binding.

Get parameters for SelectParameters from another dropdown in c# .net

Does anyone how can I get the parameters for SelectParameters from another dropdown in c# .net?
I check online , and I follow the steps that been told, but it's doesn't seem working for me.
Code:
If I have the following code to retrieved the data for a dropdown:
<asp:DropDownList ID="DropDownVisaType" runat="server" DataSourceID="dsDropDownVisaType" CssClass="dsDropDownVisaType"
DataValueField="VisaTypeID" DataTextField="VisaType" AppendDataBoundItems="true" >
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="dsDropDownVisaType" runat="server" ConnectionString="<%$ ConnectionStrings:SmartStaffConnectionString %>"
SelectCommand="app_visa_type_select" SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
After I select the dropdown, I want to use the VisaTypeID from the dropdown to retrieve data from another dropdown as below:
<asp:DropDownList ID="DropDownVisaTypeSpecific" runat="server" DataSourceID="dsDropDownVisaTypeSpecific" CssClass="dsDropDownVisaTypeSpecific"
DataValueField="VisaTypeSpecificID" DataTextField="VisaTypeSpecific" AppendDataBoundItems="true" >
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="dsDropDownVisaTypeSpecific" runat="server" ConnectionString="<%$ ConnectionStrings:SmartStaffConnectionString %>"
SelectCommand="app_visa_type_specific_select" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter Property="SelectedValue" ControlID="DropDownVisaType" Name="VisaTypeID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
Does anyone know what is my code going wrong and how can I make it work?
There is an event SelectedIndexChanged for A dropdown by using that you can get the value of selected Item.
Like below:
protected void DropDownVisaType_SelectedIndexChanged(object sender, EventArgs e)
{
Int32 value = Convert.ToInt32(DropDownVisaType.SelectedItem.Value);
DropDownVisaTypeSpecific.DataSource=Method_Name(Value);
DropDownVisaTypeSpecific.DataBind();
}

Categories

Resources