Тізімдегі жолды түзеткеннен кейін элементтің орнын сақтаңыз ... мен тіпті тырысамын ба?

Мен ASP.NET ListView-ты қолмен байланыстырамын, алфавиттік түрде сұрыпталған объектілердің атауына. Элементті өңдегеннен кейін DataSource қайта орнатылады және DataBind шақырылады. Егер атау өзгерген болса, сіз өңдеген элемент әлдебіреу басқа бетке көшірілген болуы мүмкін.

Мысалға; Сіз Шұжыққа арналған Hot Dog деп өзгертдіңіз, сосын Колумбиядан кейін ItemUpdating аяқталды.

--- OLD LIST ---   --- NEW LIST ---
    Hamburger          Hamburger
    Hot Dog______      Pizza
    Pizza        |_____Sausage

Бұл мінез-құлық нысанын күте ме? Жолды өңдегенде, оны сақтағаннан кейін сол жолды көргіңіз келе ме? Бұл дәл сол жерде болу керек пе? тек жазғаннан кейін ғана өңдеген жазбаны көрсетуім керек пе?

Алдыңғы тапсырысты техникалық жағынан сақтап болғаннан кейін сақтауға болады және ықтимал өзгертуге тәртібін;

Мен бұл неге екенін білемін. Мен оны болдырмау идеясын іздеймін.

EditItemTemplate басқару элементтерін ItemTemplate ішіне біріктіруді және ListView EditIndex негізделген тек оқуға арналған/өңделетін басқару элементтеріндегі көріністі орнату туралы ойланамын.

Бұл мүмкін деп ойлаймын, бірақ мен сенемін, егер сіз тамаша адамдар басқа идеялар бар ма?

2

3 жауаптар

Мұнда көріп отырған мінез-құлық ақпараттың дұрыс сұрыпталуын жасағаннан кейін, әдеттегі қалаған нәтиже болып табылады. Егер сізге ескі құрылымды сақтап қалу қажет болса, сіз өз лауазымыңызда айтқандарға ұқсас маршрутқа баруыңыз ықтимал.

Дегенмен, мен секундына бір рет қатыса аламын және сіздің пайдаланушыларыңыздың бұл нәрсені қалайтындығын көре аламын ба, бұл көптеген түзетулерден кейін шынымен шатастыратындығын көрдім.

2
қосылды
Ия, мен осыған ұқсас әртүрлі веб-негізделген басқару құралдарын қолдандым. Тізім әр өңдеуден кейін қайта сұрыпталады. Жалғыз вариация, сіз тізімде тұрғаныңызды қалсаңыз немесе жаңа орынға жазылғандығыңыз сияқты. Бұл пейджинг ойнатылып жатқанда, әсіресе маңызды ... және бұл сіздің пайдаланушыларыңыздың талаптарына байланысты.
қосылды автор Tevo D, көзі
Міне тамаша мысал - менің онлайн-банктік жоспарлы төлемдерім төленетін күні бойынша сұрыпталады. Бірінші элементтің күнін кейінірек өзгертуге болады және тізімнен жоғалып кетуі мүмкін. Бұл күтілетін мінез-құлық, себебі бұл белгілі бір уақыт кезеңі үшін төленетін ақшаның көрінісі.
қосылды автор Tevo D, көзі
Деректер тізімдері үшін типтік мінез-құлықты өңдеуден кейін қайта сұрыпталған ба? Мен тіпті кез-келген веб-қосымшаларды еске түсіргім келеді, онда тіпті бастапқы орнымнан сұрыпталатын жолды түзетуге тура келді, бірақ сол сәтте мен мұны істемеймін.
қосылды автор Orange Kid, көзі

Пайдаланушыларым менің GridView сағаттарындағы деректер жиындарымен жұмыс істеген кезде, әр деректер элементінің орны бірдей қалатынына көз жеткізу үшін әрқашан дерекқордың дерекқоры арқылы тапсырыс беремін. Деректер көзі қандай екенін білмей-ақ, қайта сұрыптаудан аулақ бола немесе өзгерте алатыныңызды айту қиын.

Алайда, бастапқы деректер көзін сеансқа сақтаған болсаңыз ( бұл таза спекуляция), егер сіз бастапқы деректер көзін сеанста сақтасаңыз ( Сіз дерекқорға қайта оралғаныңызды және деректерді жібергеннен кейін алынғандығыңызды болжап отырмын) және онда тапсырыс берген сәйкестендіргіш бар, сонда сіз келесідей нәрсені жасай аласыз:

void ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
    List foodDataSource = Session["dataSource"];
    ListItem editedFoodItem = foodListView.Items[e.ItemIndex];

    MyFood newFood = new MyFood(
        ((HiddenField)editedFoodItem.FindControl("foodId")).Value,
        ((Label)editedFoodItem.FindControl("foodName")).Text
    );

    foodDataSource.Where(k => k.foodId == newFood.foodId).foodName = newFood.foodName;

   //I'm guessing that you'll save somewhere in here,
   //rather than do an update-once-style commit to the database when the user clicks a save button.

    foodListView.DataSource = foodDataSource;
    foodListView.DataBind();
}

Бұл WebControls / HtmlControls сілтемесін қосу үшін ItemTemplate кодты қатаң кодпен бекітеді. Бұл кодты және бұл кодын FindControl қоңыраулары сияқты бөлек функция сияқты карантиндік жағымсыз кодқа қайтару қажет, бірақ бұл менің қолданушыларым GridView түрлендіріп, өзгертулерді дерекқорға сақтаңыз.

Alternatively, you could keep your current save methods the same, and just add something like:

void ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
    ListItem editedFoodItem = foodListView.Items[e.ItemIndex];
    Label foodNameLabel = ((Label)editedFoodItem.FindControl("foodName"));

    foodNameLabel.BackColor = System.Drawing.Color.LightGreen;

   //Saving in here, somewhere.

   //I'm not totally positive that DisplayIndex is the correct property here.
    foodListView.Items.Where(k => k.DisplayIndex != e.ItemIndex).BackColor = System.Drawing.Color.White;
}

Пайдаланушыларыңыз UI белгілерін түсінеді ма, жоқ па, соны білмеймін, немесе егер ол жойылып кетсе, ол көмектеседі (бұл сіздің өміріңізді қиындатады, әрине), бірақ менің ойымша, бұл жоғарыда көрсетілген опцияға қарағанда аз бессмыс әр өңдеуден кейін дерекқорға өзгерістерді сақтаған кезде.

1
қосылды

Кейбір жағдайларда тізімді пайдаланбау және оны қай жерде болсаңыз, солай қалдыру керектігін көрдім. Бағдарламашылар не болғанын түсінгенде, орташа пайдаланушы олардың элементтері жойылған деп ойлайды.

Мен осы мінез-құлықты көрсететін үлгі веб-сайтты біріктірдім. Бұл шын мәнінде қол жеткізуге оңай, және менің жоба әдісіңізге бейімделе алатыныңызға сенімдімін.

Жаңғақ қабықшасында торды әр уақытта байланыстыратын болсам, пайдаланушының таңдауы бойынша (немесе әдепкі сұрыптау) деректер тізіміне тапсырыс беремін, бірақ бұны торға байланыстырудан бұрын, тапсырыстың сақталуы керек екенін тексеремін , Мен тордың DataKeyArray жүйесінен соңғы ретсикалық нөмірді шығарып аламын және дәйектілік сандарын сәйкес элементтерге байланыстырамын. Олар тәртіпті сақтағысы келмеген жағдайда, сұрыпталған тізімдегі әрбір элементке қосымша сандар тізбесін байланыстырамын. Содан кейін мен қарапайым нөмірмен сұрыптаймын.

жобасына қараңыз және менің ойымша, бұл мағынасын арттырады.

0
қосылды