PDA

View Full Version : null شدن مقدار collection ای از مقاددیر کلاس



resident
دوشنبه 11 فروردین 1393, 11:59 صبح
سلام.
من یه لیست به صورت زیر دارم. این لیست تو فرم ورود اطلاعات نمایش داده میشه.

@for (int i = 0; i < Model.Affiliations.Count(); i++)
{
<tr>
@Html.HiddenFor(modelItem => Model.Affiliations[i].PersonCompany_Affiliation_AffiliationID)
@Html.HiddenFor(modelItem => Model.Affiliations[i].PersonCompany_Affiliation_PersonCompanyParentID)
@Html.HiddenFor(modelItem => Model.Affiliations[i].PersonCompany_Affiliation_ResponsibilityID)
@Html.HiddenFor(modelItem => Model.Affiliations[i].PersonCompany_Affiliation_OrganizationUnitID)
<td>
@Html.DisplayFor(modelItem => Model.Affiliations[i].combinatorialAffiliation)
</td>

<td>
<a style="display: inline" href="#" onclick="DeleteRow(this.parentNode.parentNode.rowIndex,'Aff iliationdatatable')">حذف</a>
</td>
</tr>
}

اینم نوشتم برای عملیات حذف:

function DeleteRow(rowNumber, dataTableId) {
document.getElementById(dataTableId).deleteRow(row Number);
}


و اما مشکلم:
فرض کنید سه ردیف داریم. اگه من بیام ردیف اول رو حذف کنم، وقتی دکمه ی ثبت فرم اصلی رو میزنم لیست Affiliation ، نال است.
فکر کنم به دلیل بهم خوردن index ها این مشکل پیش میاد.(چون index صفر نیست و 1و2 هست ، null برمی گردونه)

کسی می تونه کمک کنه؟ چکارش کنم؟

ali_autumnal
دوشنبه 11 فروردین 1393, 16:48 عصر
Model.Affiliations[i].PersonCompany_Affiliation_AffiliationID

این روش مقداردهی صحیح نیست. در بعضی از مرورگر ها، متغیرهایی که در آی دی آنها از نقطه استفاده شده مرورگر به جای نقطه Underline قرار میده. سرور هنگام دریافت دیتا به مشکل بر میخوره و null دریافت می کنه

سعی کنید مدل رو طوری اصلاح کنید که فیلدها شئی از مدل اصلی شوند!

بجای کد بالا:



@Html.HiddenFor(modelItem => Model.PersonCompany_Affiliation_AffiliationID)

ویا:



@foreach(var item in Model.Affiliations){
@Html.HiddenFor(modelItem => item.PersonCompany_Affiliation_AffiliationID)
}

resident
دوشنبه 11 فروردین 1393, 17:05 عصر
اگه اینطوری صدا زده بشه که شما گفتین، یعنی:
@Html.HiddenFor(modelItem => Model.PersonCompany_Affiliation_AffiliationID)

اگر 4 تا از این فیلد داشته باشیم،اونوقت name های تکراری باعث به وجود اومدن خطا نمیشه؟ می تونه همه ی مقادیر رو بگیره؟
از کجا می تونه تشخیص بده که مثلا این 4 تا مقدار مربوط به آیتم اوله، 4 تای بعدی آیتم دوم و ....؟؟

resident
پنج شنبه 14 فروردین 1393, 20:39 عصر
دوستان عزیز ممنون میشم اگه راهنماییم کنید.
مسئله ی خیلی مهمیه که اگه حل نشه خیلی برام مشکل ایجاد می کنه :(

kavayo
جمعه 15 فروردین 1393, 15:28 عصر
این سطر ها دارای id متفاوتی هستند و زمانی که شما دکمه حذف سطر مورد نظر را میزنید میتوانید id سطر مورد نظر را به یک اکشن بفرستید و عمل حذف صورت گیرد

resident
یک شنبه 17 فروردین 1393, 10:12 صبح
خدا رو شکر، مشکلم حل شد.
اینم لینک راهنما:
http://stackoverflow.com/questions/12287203/non-sequential-collection-binding