|
Hi guys, I'm new to MVC and ASP probably like a few days experience.
I've googled, looked through examples but not finding what I need.
I have a service which returns a
IEnumerable<ViewModel>
I consequently pass this Model into the View using
Inherits="System.Web.Mvc.ViewPage<IEnumerable<ViewModel>>"
I have an asp:GridView setup with no datasource.
How would I bind the model that is passed into the View to the GridView?
I'm currently doing it like this but I would really like to have it in a gridview whereby i can sort the information and apply filters since I don't want to access the SQL DB directly from the ASP page and use the service to access it then return the Model like I am.
<ul>
<% foreach (var vm in ViewModel) { %>
<li>
<%= Html.ActionLink("Edit", "Edit", new { id = vm.ClientCode })%>
<%= Html.Encode(vm.ClientCode)%>
is the code for
<%= Html.Encode(vm.ClientName)%>
<%= Html.Encode(vm.ClientSurname)%>
</li>
<% } %>
</ul>
|
|
|
|
|
I have a problem of integration of the city code in the table of the employer database, it always inserts the last record in the table and here is the city code used:
protected void Page_Load(object sender, EventArgs e)
{
foreach (short vKey in city.Keys)
{
dropdownlist1.Items.Add(city[vKey].cityName);
dropdownlist1.DataTextField = city[vKey].cityName;
dropdownlist1.DataValueField = (city[vKey].id_city).ToString();
}
}
and the code in the button is:
employer.cityName= short.Parse(dropdownliste1.DataValueField);
employer.insert();
|
|
|
|
|
if(!IsPostBack)
{
foreach (short vKey in city.Keys)
{
dropdownlist1.Items.Add(city[vKey].cityName);
dropdownlist1.DataTextField = city[vKey].cityName;
dropdownlist1.DataValueField = (city[vKey].id_city).ToString();
}
}
|
|
|
|
|
Wrap in IsPostback .
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
foreach (short vKey in city.Keys)
{
dropdownlist1.Items.Add(city[vKey].cityName);
dropdownlist1.DataTextField = city[vKey].cityName;
dropdownlist1.DataValueField = (city[vKey].id_city).ToString();
}
}
}
me, me, me
"The dinosaurs became extinct because they didn't have a space program. And if we become extinct because we don't have a space program, it'll serve us right!"
Larry Niven
nils illegitimus carborundum
|
|
|
|
|
Ignoring the number of seconds, we both replied exactly on the same time
|
|
|
|
|
Great minds think alike!
I've noticed this before though it doesn't mean anything. I think. Or maybe...
me, me, me
"The dinosaurs became extinct because they didn't have a space program. And if we become extinct because we don't have a space program, it'll serve us right!"
Larry Niven
nils illegitimus carborundum
|
|
|
|
|
ok , thank you very much for both of you, but it does not work with IsPostBack, it always inserts the last record in the table table in town employer, as in adding the new num employer must record the index of the choice of city and not the name of the city
|
|
|
|
|
Try:
employer.cityName = dropdownliste1.SelectedItem.Value;
me, me, me
"The dinosaurs became extinct because they didn't have a space program. And if we become extinct because we don't have a space program, it'll serve us right!"
Larry Niven
nils illegitimus carborundum
|
|
|
|
|
Unfortunately, it doesn't work
|
|
|
|
|
Hmm: well, I was intrigued so I knocked up a wee app to simulate what you are doing and, for me, it works. That is, wrapping with both bits of code.
Have you checked to see what it is you're actually outputting to the list; is each id unique or are they all the same?
Can't really see a reason why this should not work as advertised. (Course I can't actually see what you are doing!)
me, me, me
"The dinosaurs became extinct because they didn't have a space program. And if we become extinct because we don't have a space program, it'll serve us right!"
Larry Niven
nils illegitimus carborundum
|
|
|
|
|
A lot of people have given you the IsPostBack answer, but no one has commented on your loop. What is in your collection and what are you using for your keys? If you had a List<T> you wouldn't have to generate the list of keys and you wouldn't need to loop at all. You could just set the DataSource for the dropdown. If you set a datasource instead of doing Items.Add every time that would also eliminate your duplicates and it would be more efficient the one time it does run (once you had the IsPostBack check).
|
|
|
|
|
must use the loop to fill the dropdownlist, and since I work in n-tier gift is not easy to call the database in the datasource in this layer, so you should always call the dictionary but the problem I can not solve is that how to save the id of the city selction instead of city name chosen in the dropdownlist ??????
|
|
|
|
|
I have no idea what that means. I use n-tier architectures all the time and looping is not necessary and neither are dictionaries. A good n-tier architecture has a business layer that contains objects that represent business entities. Using dictionaries is not good practice because you lose some of the benefits from strong typing in C#.
|
|
|
|
|
Okay: think this will do it:
dropdownlist1.Items.Add(new ListItem(city[vKey].cityName, (city[vKey].id_city).ToString()));
I guess we missed that one - you were setting both the text and value to the same thing. If you had stepped through the code or viewed the source on the page you would have probably picked this up - but don't feel bad - several of us missed it as well!
me, me, me
"The dinosaurs became extinct because they didn't have a space program. And if we become extinct because we don't have a space program, it'll serve us right!"
Larry Niven
nils illegitimus carborundum
|
|
|
|
|
|
I want to know " what are the parameters passed when a message is passed from one system to another conneted over LAN"?
Please can any one list the parameters by which another system is detected in LAN.
Thanks in adv...
|
|
|
|
|
Do not cross post. Stick to appropriate forum and be patient for replies.
|
|
|
|
|
choose a single forum to ask your question, and stick to it.
|
|
|
|
|
Hello All,
I need to loop inside asp.net page and get all the controls IDs inside array list but it always count the controls as 5 and never get any controls i will appriciate it if any one can help me
thanks in advanec
eslam soliman adam
public partial class Test2 : System.Web.UI.Page
{
ArrayList numbers;
protected void Page_Load(object sender, EventArgs e)
{
numbers = new ArrayList();
LoopPageControls(Page.Controls);
}
private void LoopPageControls(ControlCollection controlCollection)
{
foreach (Control control in controlCollection)
{
if (control.Controls != null)
{
LoopPageControls(control.Controls);
}
else
{
numbers.Add(control.ID);
//LoopPageControls(control.Parent.Controls);
}
}
}
|
|
|
|
|
You need to try following code for the same..
private void ListControlCollections()
{
ArrayList controlList = new ArrayList();
AddControls(Page.Controls,controlList);
foreach (string str in controlList)
{
Response.Write(str + "<br/>");
}
Response.Write("Total Controls:" + controlList.Count);
}
private void AddControls(ControlCollection page,ArrayList controlList)
{
foreach (Control c in page)
{
if (c.ID != null)
{
controlList.Add(c.ID);
}
if(c.HasControls())
{
AddControls(c.Controls, controlList);
}
}
}
//OUTPUT of Code
form1
Panel1
Label1
TextBox1
Label2
TextBox2
Label3
TextBox3
Label10
TextBox10
Label11
TextBox11
Label12
TextBox12
btnControls
lblResult
Total Controls:16
HTH
Jinal Desai - LIVE
Experience is mother of sage....
|
|
|
|
|
Thanks Jinal ,
i will try it now and tell you the result . it is a great thing to ask a question and many people from different counties answer you you teach me a new thing today.
thanks agin
Eslam Soliman Adam
|
|
|
|
|
hello again i try jinal code it's perfect and more than that but i want to put this functions in a master page and when i put it it count the control of the master page,which i don't want i want it just to count the controls in the place holder of the master page
thanks
|
|
|
|
|
|
first ,Thanks sandeep i will try it .second ,i have tried a new way you may want to look at it :
public partial class _Default : System.Web.UI.Page
{
ArrayList ar;
protected void Page_Load(object sender, EventArgs e)
{
ar = new ArrayList();
Control[] ControlArray = GetControls(Page.Controls, ref ar);
}
private Control[] GetControls(ControlCollection parent, ref ArrayList controls)
{
foreach (Control c in parent)
{
controls.Add(c);
if ((c.Controls.Count > 0) )
{
GetControls(c.Controls, ref controls);
}
}
return (Control[])controls.ToArray(typeof(Control));
}
}
but it gave me the controls and the literal controls also
system.web.ui.literalcontrol
try it and tell me is it good or not .
thanks agin
|
|
|
|
|
Please format your question so that it is easy to read. There are link like "code block" and "inline code". Please use them wherever appropriate.
|
|
|
|