ورود

View Full Version : ثبت فاکتور و ردیف فاکتور در یک view



z.gitaro
شنبه 05 بهمن 1392, 19:38 عصر
تو پروژه ام یه جدول فاکتور دارم یه جدول هم واسه ردیف فاکتور گذاشتم
یه view تعریف کردم که دوتا تب داره تب اولی فیلدهای فاکتور رو داره تب دومم فیلدهای ردیف فاکتور رو داره که بصورت partial view تعریف کردم و تو تب دوم رندرش کردم پایین صفحه هم گریدویو گذاشتم که ریف فاکتورهایی که در همون لحظه واسه یه فاکتور مشخص ثیت میشه رو نشون بده
حالا مشکل من اینه که چطوری اینا رو باید در جدول ثبت کنم؟
اگه تو صفحه یه دکمه بذارم چطوری دوتا مدل رو به دو اکشن متفاوت پاس بدم

z.gitaro
یک شنبه 06 بهمن 1392, 07:36 صبح
خواهش میکنم یکی جواب بده

hakim22
یک شنبه 06 بهمن 1392, 09:27 صبح
یک روش استفاده از جاوا اسکریپت و ajax برای ثبت فاکتور و سپس ثبت زیر فاکتورهاست.

z.gitaro
یک شنبه 06 بهمن 1392, 10:06 صبح
اخه من جاوااسکریپت بلد نیستم

d_derakhshani
یک شنبه 06 بهمن 1392, 10:12 صبح
یک راه اینه اما بهترین راه نیست(با توجه به اینکه جاوااسکریپت بلد نیستی)
ابتدا ردیف ها رو در یک session ثبت کن. سپس وقتی داری اصل فاکتور رو ثبت میکنی از سشن ردیف ها رو هم ثبت کن

z.gitaro
یک شنبه 06 بهمن 1392, 10:16 صبح
میشه در مورد کد جاوا اسکریپتش یکم توضیح بدین اخه استادمون گفته با جاوااسکریپت باشه

d_derakhshani
یک شنبه 06 بهمن 1392, 10:27 صبح
با جاوااسکریپت باید هر سطر به صورت client ی ثبت بشه و هیچ post ای رخ نده. برای اینکار می تونید با استفاده از jquery و تابع append کد html مورد نظر خودتون رو توی یک تگ دیگه اضافه کنید. هنگام ارسال داده دو راه است. اگه از کنترلهای input استفاده کنید می تونید از Html.BeginForm و یا Ajax.BeginForm استفاده کنید. اما اگه تگ های input نباشه که بهتر هم هست(چون حالت فقط خواندنی پیدا میکنی) اون وقت با تابع جی کوئری $.ajax یا $.post می تونید مقادیر رو ارسال کنید برای اینکار تمامی مقادیر رو باید جمع کنید(بهتر بعدش json بشه) و بعدا ارسال کنید.
اینا کلیات بود. در مورد توابع jquery مخصوصا اونهایی که نام بردم مطالعه کنید

z.gitaro
یک شنبه 06 بهمن 1392, 10:42 صبح
مدل ویو از نوع BusinessManagement.ViewModel.InvoiceDetailVM هست میخوام این مدلو به یه ویوی دیگه که مدلش از نوع IEnumerable<BusinessManagement.ViewModel.InvoiceDetailVM> هستش پاس بدم چطوری باید این تبدیل نوع رو انجام بدم؟

d_derakhshani
یک شنبه 06 بهمن 1392, 10:56 صبح
اینکه اولی یک تک کلاس و دومی لیستیه! اصن ماهیتا قابل تبدیل نیستن!

z.gitaro
یک شنبه 06 بهمن 1392, 10:58 صبح
شما گفتین با تابع append کد html رو تو یه تگ دیگه اضافه کنم،نمیدونم منظورتون چیه؟
اینجا که من دوتا پارشیال ویو و یک ویو دارم موقع اجرا همه ی تگهای لازم رو دارن

d_derakhshani
یک شنبه 06 بهمن 1392, 11:01 صبح
فرقی نمیکنه چندتا ویو دارید چون همه اینها در سمت مرورگر با هم ادغام میشه. در مورد اینکه منظورم رو متوجه نشدید خدمت تون فرمودم در مورد این توابع مطالعه کنید. کافیه تو گوگل بزنید jquery append تا مثال های زیادی براتون لیست بشه.

z.gitaro
یک شنبه 06 بهمن 1392, 11:09 صبح
ممنون بابت راهنمایتون
چون مبتدیم دقیقا نمیدونم باید چکار کنم حالا برم ببینم چی میشه!

z.gitaro
یک شنبه 06 بهمن 1392, 11:18 صبح
من که این همه وقتتونو گرفتم خواهشا اینم جواب بدین!
تو فرم وقتی فیلدای ردیف فاکتور ور پر کردم و دکمه ی افزودن رو زدم چطوری بگم این فیلدا بعنوان یه رکورد در گرید پایین صفحه همون لحظه نمایش داده بشه؟
اگه میشه کدشو بگین!

d_derakhshani
یک شنبه 06 بهمن 1392, 11:25 صبح
خوب این رو که توضیح دادم. با استفاده از روش جاوااسکریپتی و تابع jquery append

z.gitaro
یک شنبه 06 بهمن 1392, 11:35 صبح
سورس گریدوی باید لیست باشه ولی مدلی که تو فرم پر میشه از نوع BusinessManagement.ViewModel.InvoiceDetailVM هست چجوری این مدل رو به گرید ویو append کنم واسه همین اشکالم اون تبدیل نوع رو پرسیدم

d_derakhshani
یک شنبه 06 بهمن 1392, 11:56 صبح
از اونجا که جاوااسکریپت در سمت مرورگر هست اصلن کلاس شما قابل شناسایی نیست.

z.gitaro
یک شنبه 06 بهمن 1392, 12:01 عصر
میشه تو یه خط کد بگین دستور اضافه کردن فیلدهای پرشده با زدن دکمه به گرید چجوری میشه؟

d_derakhshani
یک شنبه 06 بهمن 1392, 12:08 عصر
عجب!
دستورش همون append هست. اما شبه کدش این می تونه باشه. اینکه یک کنترل input با id=muinput هست و یک تگ مثلا div با id=container. این بستگی به نوع طراحی شما داره.
با اینها شما یاد نمی گیرید. برید قشنگ jquery رو مظالعه کنید و مثال ببینید.

$("#container").append('<div><span>'+$("#myinput")+'</span>');

z.gitaro
یک شنبه 06 بهمن 1392, 12:14 عصر
عجب!!!
واقعا ممنون اقای درخشانی
بخدا باور کنید دستور append رو خوندم فقط نمیدونم چطوری بگم به گرید اضافه کن اخه گرید که ایدی نداره!

z.gitaro
یک شنبه 06 بهمن 1392, 12:14 عصر
یا اینکه اصلا گرید نذارم و بجاش div بذارم

d_derakhshani
یک شنبه 06 بهمن 1392, 12:18 عصر
گرید رو چطوری اضافه کردید؟

z.gitaro
یک شنبه 06 بهمن 1392, 12:20 عصر
@{
var grid = new WebGrid(source: Model, defaultSort: "Name", rowsPerPage: 4, canPage: true, canSort: true, selectionFieldName: "selectedRow");
var rowIndex = ((grid.PageIndex + 1) * grid.RowsPerPage) - (grid.RowsPerPage - 1);
}

@grid.GetHtml(tableStyle: "webgrid", headerStyle: "webgrid-header", footerStyle: "webgrid-footer", alternatingRowStyle: "webgrid-alternating-row",
selectedRowStyle: "webgrid-selected-row", rowStyle: "webgrid-row-style",
columns:
grid.Columns
(
grid.Column(format: item => item.Description, header: "ملاحظات"),
grid.Column(format: item => item.Price, header: "قیمت کل"),
grid.Column(format: item => item.Number, header: "تعداد"),
grid.Column(format: item => item.Subject, header: "شرح"),
grid.Column(header: "ردیف", style: "text-align-center-col",format: @<text>@(rowIndex++)</text>)
))

d_derakhshani
یک شنبه 06 بهمن 1392, 12:30 عصر
باید از روش سشن که گفتم با استفاده از ajax استفاده کنید.

z.gitaro
یک شنبه 06 بهمن 1392, 12:40 عصر
من فیلدهای ذخیره شده ینی همون مدل رو در سشن ذخیره میکنم ولی ویویی که گرید توش هست مدلش از نوع لیسته،بازم همون تبدیل نوع پیش میاد