إنشاء أزرار حذف / تحرير لسجلات Muliple من LinQ باستخدام قيمة مخفية؟

StackOverflow https://stackoverflow.com/questions/1300668

  •  18-09-2019
  •  | 
  •  

سؤال

نموذج ASPX:

<asp:Table ID="viewV" runat="server">
  <asp:TableRow>
    <asp:TableHeaderCell>Name</asp:TableHeaderCell>
    <asp:TableHeaderCell>Type</asp:TableHeaderCell>
  </asp:TableRow>       
</asp:Table>

الرمز أدناه:

vRepository getV = new vRepository();

var viewAllV = getV.GetV();

foreach (tblV singleV in viewAllV)
{
    TableRow tr = new TableRow();

    // Create four new cells for each row within the database

    TableCell vName = new TableCell();
    TableCell vType = new TableCell();

    // Attached values to each of these cells

    vName.Text = singleV.vName;
    vType.Text = singleV.tblVType.vName;

    // Add the cells to the table

    tr.Cells.Add(vName);
    tr.Cells.Add(vType);

    // Add the row to the table

    viewV.Rows.Add(tr);
}

أنا حاليا ملء ASP: الجدول باستخدام LinQ، وهذا يعمل بشكل جيد.

public IQueryable<tblV> GetV()
{
    return (from getAllV in dc.tblV
            where getAllV.deleted != 1
            orderby getAllV.vName
            select getAllV).DefaultIfEmpty();
}

لقد جربت GridView / ListViewViewView ولكن لا يبدو أن الوصول إلى GetV، يمكنني الوصول إلى الجدول الفعلي فقط.

أريد إضافة زر تحرير / حذف إلى نهاية كل صف، بحيث يمكن للمستخدم تحديد الصف الذي يرغبون في تحريره / حذفه.

بمجرد تحديد المستخدم إما الزر "تحرير / حذف"، يجب بعد ذلك الوصول إلى طريقة عرض مختلفة (واحدة للتحرير، واحد للإضافة - في نفس ملف ASPX).

علي سبيل المثال:

Name    Type

Example 1   Type 1  Edit Button Delete Button

Example 2   Type 1  Edit Button Delete Button

أريد أن أكون قادرا على تحديد زر التحرير ل "مثال 1". هذا ينبغي بعد ذلك:

  1. خذني إلى "تحرير العرض"،
  2. التلقائي ملء الحقول النصين مع المعلومات الصحيحة،
  3. تحديث الصف (داخل قاعدة البيانات) مع معلومات جديدة باستخدام معرف فريد (PK).

كيف وصلتني إنتاج أزرار تحرير / حذف متعددة والتي تحمل معرف فريد من نوعه لهذا الصف؟

اعتقدت أنه سيكون شيئا مثل هذا:

TableCell vEdit = new TableCell();
vEdit.Button = singleV.vID;
tr.Cells.Add(vEdit);
هل كانت مفيدة؟

المحلول

إذا كنت تريد حقا "التعادل"، استخدم ASP.NET MVC. خلاف ذلك، يجب عليك حقا استخدام نوع من التحكم في البيانات.

ومع ذلك، إذا أصرت على هذا النهج، فمن المحتمل أن تفعل شيئا مثل هذا:

Button editButton = new Button();
editButton.Text = "Edit";
editButton.CommandArgument = singleV.vID.ToString();
editButton.CommandName = "Edit";
editButton.OnCommand += new CommandEventHandler(EditButton_Command);

TableCell vEdit = new TableCell();
vEdit.Controls.Add(editButton);

tr.Cells.Add(vEdit);

ثم من معالج الحدث الخاص بك commandeventargs. يمكنك استرداد الحجة وتغيير عرضك وفقا لذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top