PDA

View Full Version : سوال: نمایش dialog box در mvc برای ویرایش یک رکورد



homa sadeghi
دوشنبه 08 دی 1393, 15:51 عصر
سلام
من می خواهم از dialog box برای نمایش و ویرایش رکوردها استفاده کنم اما نمی دونم چه طوری این کار رو انجام بدم
لطفا دوستان راهنمایی هاشون از صفر صفر بنویسن
ممنون

r4hgozar
دوشنبه 08 دی 1393, 19:04 عصر
سلام
http://forums.asp.net/t/1861336.aspx?How+to+open+jquery+dialog+box+in+edit +mode+in+mvc3+razor

http://stackoverflow.com/questions/17985576/asp-net-mvc-4-delete-dialog-box-opens-only-on-first-item

hosein2008
دوشنبه 08 دی 1393, 23:36 عصر
میتونید از dialogbox ی که توی bootstrap گذاشته شده استفاده کنی

هم شیک هست . هم کاربردش آسونه. راهنماش هم توی سایت bootstrap پیدا میکنی

RIG000
سه شنبه 09 دی 1393, 01:12 صبح
نخیر نمیشه. اگه منظور شما این هست که قسمت ادد ، اپدیت ، و پر کردن گرید تماما انجام بشه و تهش هم یه pagelist باشه نه نمیشه. شما لطف کن خودت بنویس

homa sadeghi
سه شنبه 09 دی 1393, 09:11 صبح
سلام
http://forums.asp.net/t/1861336.aspx?How+to+open+jquery+dialog+box+in+edit +mode+in+mvc3+razor

http://stackoverflow.com/questions/17985576/asp-net-mvc-4-delete-dialog-box-opens-only-on-first-item


سلام به شما لینک ها رو دیدم و ازشون هم استفاده کردم اما دیالوگ باکس باز نمی شه
اگر امکانش هست نمونه کدهایی که خودتون باهاش کار کدین رو بفرستین

aroshanzamir
سه شنبه 09 دی 1393, 12:46 عصر
سلام
من می خواهم از dialog box برای نمایش و ویرایش رکوردها استفاده کنم اما نمی دونم چه طوری این کار رو انجام بدم
لطفا دوستان راهنمایی هاشون از صفر صفر بنویسن
ممنون

سلام دوست من :
وقت شما بخیر ....این لینک جواب سوال شماست ...در صورتی که Partial View رابشناسی و با فرم مودال در بوت استرپ آشنایی داشته باشی
نیازی به توضیح ندار
لینک (http://www.codeproject.com/Tips/826002/Bootstrap-Modal-Dialog-Loading-Content-from-MVC-Pa)

http://www.codeproject.com/Tips/826002/Bootstrap-Modal-Dialog-Loading-Content-from-MVC-Pa

اگر نفهمیدی بگو تا توضیح بدم ....

موفق باشی

mehdin69
سه شنبه 09 دی 1393, 14:23 عصر
سلام
میشه خوبشم میشه
بیا یه Helper واسه این کار نوشتم
برو تو سایت Jquery UI یه نمونه بیار بذار بالای صفحه حالا این کدها رو اضافه کن


namespace Test.Helpers
{
public class DialogOpenerOption
{
public DialogOpenerOption()
{
Width = "auto";
Height = "auto";
ShowEffect = "clip";
ShowDir = "left";
HideEffect = "clip";
HideDir = "right";
IsModal = "true";
Title = "Dialog Title";
Text = "";
Target = "Target";
id = "random_" + GRandom.Next();
Method = "POST";
CLASS = string.Empty;
gridField = "";
gridid = "";
Data = "";
OnClick = "";
}

public string CLASS { get; set; }

public string Width { get; set; }
public string Height { get; set; }
public string ShowEffect { get; set; }
public string ShowDir { get; set; }
public string HideEffect { get; set; }
public string HideDir { get; set; }
public string IsModal { get; set; }
public string Title { get; set; }
public string Text { get; set; }
public string Target { get; set; }
public string id { get; set; }
public string Method { get; set; }

public string Data { get; set; }

public string OnClick { get; set; }

public string gridid { get; set; }

public string gridField { get; set; }

public Dictionary<string, object> Dic()
{
string functioncallstring = "";
if (OnClick == "")
functioncallstring = string.Format("CMIS_showDialog(this)");
else
functioncallstring = string.Format(OnClick);
Dictionary<string, object> dic = new Dictionary<string, object>()
{
{"id", this.id},
{"href", "javascript:;"},
{"data-i-Width", this.Width},
{"data-i-Height", this.Height},
{"data-i-ShowEffect", this.ShowEffect},
{"data-i-ShowDir", this.ShowDir},
{"data-i-HideEffect", this.HideEffect},
{"data-i-HideDir", this.HideDir},
{"data-i-IsModal", this.IsModal},
{"data-i-Title", this.Title},
{"data-i-Text", this.Text},
{"data-i-Target", this.Target},
{"data-i-Method", this.Method},
{"data-i-Data", this.Data},
{"class", this.CLASS},
{"onclick", functioncallstring},
{"data-i-gridid",this.gridid },
{"data-i-gridfield", this.gridField}
};

return dic;

}

}
}

اینم تو یه فایل js بنویس بذار بالا صفحه



function CMIS_showDialog(idselector) {
var item = jQuery(idselector);
var gridid = item.attr('data-i-gridid');
var gridfield = item.attr('data-i-gridfield');
var data2 = "";
if (gridfield != "") {
var grid = jQuery("#" + gridid);
if (grid.length == 0) {
alertbox("grid not found");
return;
}
var dataItem = grid.data("kendoGrid").dataItem(item.closest("tr"));
var rowid = dataItem[gridfield];
//$('#divid').load(jQuery(e.currentTarget).attr("myclass") + dataItem[id]);
data2 = { id: rowid };
}
jQuery.ajax({
type: item.attr('data-i-Method'),
url: item.attr('data-i-Target'),
data: /*item.attr('data-i-Data')*/data2
}).done(function (data) {
var dialogid = "dialog" + Math.floor((Math.random() * 100000) + 1);
randomDialogId = dialogid;
jQuery("body").append("<div id='" + dialogid + "' title='Basic dialog'>" + data + "</div>");
jQuery("#" + dialogid).dialog({
width: item.attr('data-i-Width'),
height: item.attr('data-i-Height'),
ShowEffect: item.attr('data-i-ShowEffect'),
ShowDir: item.attr('data-i-ShowDir'),
HideEffect: item.attr('data-i-HideEffect'),
HideDir: item.attr('data-i-HideDir'),
position: { my: "center top", at: "center bottom", of: 'nav' },
modal: true,/* item.attr('data-i-IsModal')*/
title: item.attr('data-i-Title'),
close: function (event, ui) {
//onClose();
//jQuery("#" + dialogid).location.reload();
if (gridid != '') {
jQuery("#" + item.attr('data-i-gridid')).data("kendoGrid").dataSource.read();
}
jQuery("#" + dialogid).remove();
}
}).keypress(function (e) {
if (e.keyCode == jQuery.ui.keyCode.ENTER) {
e.preventDefault();
}
});
});

}



اینم توی Helper


public static MvcHtmlString DialogOpener(this AjaxHelper ajaxHelper, DialogOpenerOption option)
{
/*
* {"data-i-gridid",this.gridid },
{"data-i-gridfield", this.gridField}
* */

string id = option.id;
var tag = new TagBuilder("a");
tag.InnerHtml = option.Text;
tag.MergeAttribute("id", id);
tag.MergeAttribute("href", "javascript:;");
tag.MergeAttribute("data-i-Width", option.Width);
tag.MergeAttribute("data-i-Height", option.Height);
tag.MergeAttribute("data-i-ShowEffect", option.ShowEffect);
tag.MergeAttribute("data-i-ShowDir", option.ShowDir);
tag.MergeAttribute("data-i-HideEffect", option.HideEffect);
tag.MergeAttribute("data-i-HideDir", option.HideDir);
tag.MergeAttribute("data-i-IsModal", option.IsModal);
tag.MergeAttribute("data-i-Title", option.Title);
tag.MergeAttribute("data-i-Text", option.Text);
tag.MergeAttribute("data-i-Target", option.Target);
tag.MergeAttribute("data-i-Method", option.Method);
tag.MergeAttribute("data-i-Data", option.Data);
tag.MergeAttribute("data-i-gridid", option.gridid);
tag.MergeAttribute("data-i-gridfield", option.gridField);
tag.MergeAttribute("class", option.CLASS);
string functioncallstring = "";
if (option.OnClick == "")
functioncallstring = string.Format("CMIS_showDialog(this)");
else
functioncallstring = string.Format(option.OnClick);
tag.MergeAttribute("onclick", functioncallstring);
return MvcHtmlString.Create(tag.ToString());
}



حالا کاری نداری دیگه فقط ازش استفاده کن


Ajax.DialogOpener(new DialogOpenerOption { gridid = "grid_Contractor", Text = "add new Contractor", CLASS = "addnewbutton", OnClick = "TestFunction()", Target = Url.Action("Create", "Contractor"), Method = "GET", Title = "Create Contractor" })

ali-akbarian
سه شنبه 09 دی 1393, 16:49 عصر
سلام mehdin69 (http://barnamenevis.org/member.php?164274-mehdin69)

ممکنه فایل پروژه را بزاری .. ممنون میشم و میشه توضیح بدی data-i-ShowEffectو .. به چی اشاره دارند ؟

homa sadeghi
سه شنبه 09 دی 1393, 16:57 عصر
سلام به شما
ممنون از اینکه به این تاپیک جواب دادین
اما من چون تازه Mvc شروع کردم دقیق متوجه نشدم اینکه فرمودین:

برو تو سایت Jquery UI یه نمونه بیار بذار بالای صفحه حالا این کدها رو اضافه کن
باید از Jquery UI چی بگیرم و کدهایی که زیرش نوشتین باید توی کدوم فایلم بنویسم؟؟؟

تو قسمت سوم هم که نوشتین توی helper کد بنویسم
helper چطور درست کنم؟؟؟
ممنونم

aroshanzamir
سه شنبه 09 دی 1393, 18:10 عصر
سلام به شما
ممنون از اینکه به این تاپیک جواب دادین
اما من چون تازه Mvc شروع کردم دقیق متوجه نشدم اینکه فرمودین:

برو تو سایت Jquery UI یه نمونه بیار بذار بالای صفحه حالا این کدها رو اضافه کن
باید از Jquery UI چی بگیرم و کدهایی که زیرش نوشتین باید توی کدوم فایلم بنویسم؟؟؟

تو قسمت سوم هم که نوشتین توی helper کد بنویسم
helper چطور درست کنم؟؟؟
ممنونم


توی ویژوال استدیو کنسول پاور شل نیوگت را باز کن و بنویس

Tools -> Neuget Package Manager -> Package Manager Console

Install-Package JQuery.UI.Combined

خودش دیگه تمام فایل های جاوااسکریپتی مورد نیاز برای کار با JQuery UI را اضافه می کند

در ضمن نمونه این کار هم در یک پروژه مدیریت محتوا که در سایت استاد نصیری است انجام شده ... دانلود کن .....قسمت پروژه ها در سایت Dotnettips.info

البته در لینکی که در پست قبلی من شما را به اون ارجاع دادم با استفاده از فرم مودال BootStrap انجام می شود و دیگر نیازی به استفاده از JQuery UI نیست ....

موفق .و پیروز باشی

aroshanzamir
سه شنبه 09 دی 1393, 20:25 عصر
سلام به شما
ممنون از اینکه به این تاپیک جواب دادین
اما من چون تازه Mvc شروع کردم دقیق متوجه نشدم اینکه فرمودین:

برو تو سایت Jquery UI یه نمونه بیار بذار بالای صفحه حالا این کدها رو اضافه کن
باید از Jquery UI چی بگیرم و کدهایی که زیرش نوشتین باید توی کدوم فایلم بنویسم؟؟؟

تو قسمت سوم هم که نوشتین توی helper کد بنویسم
helper چطور درست کنم؟؟؟
ممنونم


به گفته آقای راد :
یکی از نیاز های متداول در View تولید عناصر HTML است . تغیر کد های HTML خسته کننده است بوژه زمانی که یک کد HTML در تعدادی View باشد و شما بخواهید یک سری تغیرات را بروی همه آنها اعمال کنید در این حالت باید این تغرات را در تمامی View های که از این کد HTML استفاده می کنند اعمال کنیم ...

در MVC برای حل این مشکل از HTML Helper ها استفاده می کنیم : HTMl Helper ها به دوسته تقسیم شده اند :
1-Inline Html Helper
2-External Html Helper

که در مثال بالا که دوستمون نوشتند از روش 2 استفاده شده است

موفق و پیروز باشی

RIG000
چهارشنبه 10 دی 1393, 16:18 عصر
با دوست عزیز و گرامی ما اقای kendo هم قابل انجام است.