ورود

View Full Version : مبتدی: اجرای اکشن متد با تغییر DropDownList



Cybersilent
دوشنبه 13 خرداد 1392, 14:03 عصر
سلام
من DropDownList دارم که می خوام وقتی تغییر می کنه یک اکشن متد صدا زده بشه و اونجا شی Model تغییر می کنه و دوباره return View("Index",model)
اما انگار صفحه رفرش نمیشه و هیچ اتفاقی نمی افته!!
ممنون میشم راهنمایی کنید.

mo.esmp
دوشنبه 13 خرداد 1392, 23:14 عصر
بالای اکشن اینو بزار ببین صفحه تغییر میکنه یا نه ؟ اگه تغییری حاصل نشد شاید اصلا تغییری روی Model انجام نمیگیره.
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]

younesdoost
سه شنبه 14 خرداد 1392, 23:41 عصر
این دقیقا اون چیزیه که می خواید:
@using (Html.BeginForm("Action","Controller")){
@Html.DropDownList("Dropdown", (List<SelectListItem>)ViewBag.objects, "Entekhab Konid", new { onchange = "this.form.submit();" })}
دقت کنید که اون ViewBag.objects رو باید داخل کنترلرتون پر کنید.باید یک لیستی از SelectListItem باشه.یعنی List<SelectListItem>.
اگه نمیدونید چطور این کار رو بکنید می تونید به لینک زیر یک نگاهی بندازید.
http://stackoverflow.com/questions/12112541/mvc-c-sharp-html-dropdownlist-and-viewbag

Cybersilent
یک شنبه 19 خرداد 1392, 14:12 عصر
کد ها رو به شکل زیر تغییر دادم

@using (Html.BeginForm("ChangeCity", "Link"))
{
@Html.DropDownList("Cities", new SelectList(db.Cities.Select(x => new { Value = x.Id, Text = x.Name, onchange = "this.form.submit();" }).OrderBy(x => x.Text), "Value", "Text"), new { @class = "dropdown1", id = "Cities" })
}

و قسمت کد

public ActionResult ChangeCity(Guid cityId)
{
TempData["cityId"] = cityId;
IEnumerable<Link> links = db.Links.Where(x => x.Type == 1 && x.City.Id == cityId);
return View("Index", links);
}

حالا چطور شهر انتخاب شده رو در سمت کد بگیرم!؟

forestasphalt
یک شنبه 19 خرداد 1392, 16:46 عصر
برای گرفتن مقدار Name یه پارمتر رشته ای به نام string Name بساز
و برای آیدی یه پارامتر عددی int Id بساز
بهتر از این روش استفاده کنی(اگر از آجاکس استفاده کنی که محشر کبری میشه! )
http://stackoverflow.com/questions/5377402/having-difficulty-using-an-asp-net-mvc-viewbag-and-dropdownlistfor

younesdoost
سه شنبه 21 خرداد 1392, 16:30 عصر
کد ها رو به شکل زیر تغییر دادم

@using (Html.BeginForm("ChangeCity", "Link"))
{
@Html.DropDownList("Cities", new SelectList(db.Cities.Select(x => new { Value = x.Id, Text = x.Name, onchange = "this.form.submit();" }).OrderBy(x => x.Text), "Value", "Text"), new { @class = "dropdown1", id = "Cities" })
}

و قسمت کد

public ActionResult ChangeCity(Guid cityId)
{
TempData["cityId"] = cityId;
IEnumerable<Link> links = db.Links.Where(x => x.Type == 1 && x.City.Id == cityId);
return View("Index", links);
}

حالا چطور شهر انتخاب شده رو در سمت کد بگیرم!؟


تمام چیزایی که نوشتید درسته فقط یه اشتباه دارید.توی کنترلر خودتون نام مقداری که می گیرید برابر با چیزی که می فرستید نیست.کنترلر شما باید یک متغیر عددی رو بگیره که نام اون متغیر باید با نام DropDown شما برابر باشه.یعنی فقط کافیه پارامتری رو که DropDown شما میفرسته با پارامتری که کنترلر شما میگیره یکی بشه.به عبارتی یعنی اسم DropDown خودتون رو از Cities به cityId تغییر بدید.همچنین نوع پارامتر در کنترلر رو هم int بذارید.تمام.

ERIKA
سه شنبه 21 خرداد 1392, 22:58 عصر
با سلام
من هم یک سوالی داشتم که بی ارتباط با این مبحث نیست

میخاستم بینم شما میتونید کمکم کنید
من یک گرید کندو دارم کاری که میخام انجام بدم این هست که وقتی دکمه ویرایش زده میشود به صورت خطی بتوان مقادیر را ویرایش کرد بعد داخل این گرید 2 تا کمبو هست که به هم وابسته هستند با تغییر یکی باید دومی تغییر کنه
توی این که این دو تا گرید با هم کار کنند و وابسته باشند گیر دارم



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="Scripts/kendo/2013.1.514/jquery.min.js"></script>
<script src="Scripts/kendo/2013.1.514/kendo.all.min.js"></script>

<link href="Content/kendoui.aspnetmvc.2013.1.319.trial/styles/kendo.common.min.css" rel="stylesheet" />
<link href="Content/kendoui.aspnetmvc.2013.1.319.trial/styles/kendo.default.min.css" rel="stylesheet" />
</head>
<body>

<div id="grid" ></div>

<script>


function onChange() {

//var value = this.value;
alert(this.value());
//citycodeDropDownEditor
// alert( $(this).find(this.value()).text());


var s=this.value()
for (i = 0; i < cityDataSource.length; ++i) {
if (cityDataSource[i].s == this.value())
alert("okk");
else
alert("noo");

}




};
var viewModel = kendo.observable({
gridSource: [
{ FirstName: "Shiva", LastName: "Wahi", CityName: "Noida",CityCode:"0311", Title: "Module Lead", BirthDate: "10/29/1984", Age: 27 },
{ FirstName: "Priya", LastName: "Srivastava", CityName: "Delhi",CityCode:"0711" ,Title: "Tech Lead", BirthDate: "08/19/1982", Age: 30 }
]
});

var cityDataSource = [{ CityID: 1, CityName: 'Delhi' }, { CityID: 2, CityName: 'Noida' }]

function cityDropDownEditor(container, options) {
$('<input data-text-field="CityName" data-value-field="CityName" data-bind="value:' + options.field + '" />')
.appendTo(container)
.kendoDropDownList({
autoBind: false,
change: onChange,
dataSource: cityDataSource ,
placeholder: "SelectCity",
dataTextField: "CityName",
dataValueField: "CityID",
filter: "CityID",


});
}

var citycodeDataSource = [{ CityID: 1, CityCode: '0311' },{ CityID: 1, CityCode: '0312' },{ CityID: 1, CityCode: '0315' }, { CityID: 2, CityCode: '0711' }]

function citycodeDropDownEditor(container, options) {
$('<input data-text-field="CityCode" data-value-field="CityCode" data-bind="value:' + options.field + '" />')
.appendTo(container)

.kendoDropDownList({
autoBind: false,

dataSource:
citycodeDataSource
});
}
$(document).ready(function () {
var dataSource = new kendo.data.DataSource({
pageSize: 30,
data: viewModel.gridSource,
autoSync: false,
schema: {
model: {
fields: {
FirstName: { type: "string" },
LastName: { type: "string" },
CityName: "CityCode",
Title: { type: "string" },
BirthDate: { type: "date" },
Age: { type: "number" }
}
}
}
});

$("#grid").kendoGrid({
dataSource: dataSource,
pageable: true,

editable:"inline",
height: 260,

toolbar: ["create"],
columns: [
{
field: "FirstName",
title: "First Name",
width: 100
},
{
field: "LastName",
title: "Last Name",
width: 100
},
{
field: "CityName",
title: "City",
width: 100,
editor: cityDropDownEditor
},
{
field: "CityCode",
title: "CityCode",
width: 100,

editor: citycodeDropDownEditor
},
{
field: "Title",
width: 75
},
{
field: "BirthDate",
title: "Birth Date",
width: 75,
template: '#= kendo.toString(BirthDate,"MM/dd/yyyy") #'
},
{
field: "Age",
width: 50
},
{ command: ["edit", "destroy"], title: "&nbsp;", width: "172px" }],


});
});

</script>

</body>
</html>