مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

meysamy2003

عضویت از 1395/02/07

ایجاد دراپدان داخل سلول گرید ویو داینامیک در asp.net mvc

  • سه شنبه 7 اردیبهشت 1395
  • 13:44
تشکر میکنم

با عرض سلام خدمت دوستان عزیز 

من با استفاده از دستور اسکیوال گرید ویو داینامیک ایجاد می کنم و می خواهم درون هر سلول آن دراپ دانی با داده متفاوت ایجاد کنم  و داده هر سلول هم از تابعی در کنترلر با استفاده از دستور اس کیوال واکشی می شود.

Asp.net mvc 4 + telerik kendo+ sql server 

----------------view-----------------------------
@(Html.Kendo().Grid<dynamic>()
.Name(item1.HideCtrlName)
.Pageable(a => a.Messages(b => b.ItemsPerPage("")))
.Scrollable()
.Columns(columns =>
{
foreach (var item2 in Model.modelGrid)
{
if (item2.PropertyGridNumber == item1.HideCtrlTypeValue)
{
if (item2.PropertyFieldTypeValue.ToUpper() == "TEXTBOX")
columns.Bound(item2.PropertyFieldName).Title(item2.PropertyFieldTitle).HeaderHtmlAttributes(new { @style = "font-weight:bold; text-align:center;" })
.HtmlAttributes(new { @class = "edit-mode", @style = "text-align:center; direction: ltr;" }).Width((int)item2.PropertyFieldWidth)
.Groupable(item2.PropertyFieldGroupable).Sortable(item2.PropertyFieldSortable).Filterable(item2.PropertyFieldFilterable);
else if (item2.PropertyFieldTypeValue.ToUpper() == "DROPDOWNLIST")
{
columns.Bound(item2.PropertyFieldTitle).ClientTemplate(
Html.Kendo().DropDownList()
.Name(item1.HideCtrlName)
.Text("لطفا انتخاب کنید ")
.HtmlAttributes(new { style = "width: 140px", typeValue = item1.HideCtrlTypeValue })
.DataTextField("Name")
.DataValueField("ID")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GridView1_RowDataBound", "Home", new { CtrlName = "ProdPSVValuePSCIdF" });
});
})
.AutoBind(true)
.ToClientTemplate().ToHtmlString()
)
.HeaderHtmlAttributes(new { @style = "font-weight:bold; text-align:center;" }).HtmlAttributes(new { @style = "text-align:center;" })
.Width((int)item2.PropertyFieldWidth).Groupable(item2.PropertyFieldGroupable).Sortable(item2.PropertyFieldSortable).Filterable(item2.PropertyFieldFilterable);
}
}
}
})
.Reorderable(reorderable => reorderable.Columns(Model.modelGrid.First().PropertyGridReorderable))
.Pageable()
.Filterable(filterable => filterable
.Operators(operators => operators
.ForString(str => str.Clear()))
.Operators(operators => operators
.ForNumber(str => str.Clear()))
.Groupable(g => g.Messages(messages => messages.Empty("")))
.Sortable()
.Groupable()
.ColumnMenu()
.Navigatable()
.HtmlAttributes(new { @class = "GridView", style = "height: " + Model.person.Where(p => p.HideCtrlType.ToUpper() == "GRIDVIEW").Select(y => y.HideCtrlHeight).First() + " width: " + Model.person.Where(p => p.HideCtrlType.ToUpper() == "GRIDVIEW").Select(y => y.HideCtrlWidth).First() + " " })
.Pageable(pageable => pageable
.Info(false)
.PageSizes(new[] { Model.modelGrid.First().PropertyGridPageSize }))
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
.Read(read => read.Action("Customers_Read", "Home", new { CtrlName = item1.HideCtrlName }))
)
)
-------------------CONTROLLER--------------------------
public ActionResult Customers_Read([DataSourceRequest] DataSourceRequest request, string CtrlName)
{
var sqlcmd = DataRepository.HideProvider.GetAll().Where(p => p.HideCtrlName == CtrlName).First().HideCtrlFormul;
dbConnect db = new dbConnect();
DataTable command = db.selectCmd(sqlcmd);
return Json(command.ToDataSourceResult(request));
}
//note: i use of select in sqlserver for add GridView as dynamic in view
//note: من استفاده می کنم از دستورات اسکیوال برای ساخت گریدویو داینامیک در ویو
public JsonResult GridView1_RowDataBound(string CtrlName)
{
string sqlcmd = DataRepository.PropertyProvider.GetAll().Where(p => p.PropertyFieldName == CtrlName).Select(y => y.PropertyProcedure).First();
dbConnect db = new dbConnect();
DataTable command = db.selectCmd(sqlcmd);
var results2 = from row in command.AsEnumerable()
  select new
  {
  ID = row.Field<int>("ID"),
  Name = row.Field<string>("Name"),
  Active = row.Field<string>("Active"),
  GroupName = row.Field<string>("GroupName")
  };
return Json(results2, JsonRequestBehavior.AllowGet);
}
//note: i use of select of sqlserver for data diffrent in any dropdown in any cell in gridview
//note: من استفاه می کنم از دستور اسکیوال برای ساخت داده های دراپ دان درون هر سلول گریدویو البته داده هر دراپ دان متفاوت می باشد
how to use Dropdown with data diffrent in any cell Gridview as dynamic with sqlserver in asp.net mvc4 

با تشکر فراوان از محبت دوستان

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 7 اردیبهشت 1395
  • 14:14

شما میتونید Redirect را توسط همان javaScript انجام دهید

یعنی پس از موفقیت آمیز بودن کنترلر برای شما یک آدرس ارسال میکند  و شما میتونید توسط همان JavaScript کاربر را به صفحه مقصد هدایت کنید

از نظر امنیت هم هیچ مشکلی نداره

 

کاربر سایت

meysamy2003

عضویت از 1395/02/07

  • سه شنبه 7 اردیبهشت 1395
  • 14:26

با سلام خدمت مدیر عزیز

متشکرم از راهنمایتون ولی از طریق خود کنترلر می خواهم انجام دهد آیا راهی دارد؟

 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 7 اردیبهشت 1395
  • 14:32

شما از طریق Ajax صدا زدید

تا اونجا که من اطلاع دارم Controller نمیتونه مستقیم درخواست رو مدیریت کنه و باید از طریق همان Ajax کنترل کنید

 

کاربر سایت

meysamy2003

عضویت از 1395/02/07

  • سه شنبه 7 اردیبهشت 1395
  • 14:35

بازم از راهنمایتون تشکر میکنم

یا علی

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)