تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيف يمكن برمجة زر داخل gridview
#7
يوجد خاصيه في القريد فيو التي تعمل بها  تسمى  DataKeyNames  هذه الخاصيه تضع بها  اسم العمود الذي يحوي المفتاح الاساسي بالجدول ، يعني  سيظهر الكود في الوسوم التي بالصفحه بهذا الشكل  :

            <asp:GridView ID="DGVName" runat="server"  DataKeyNames="RecordType_ID"  
     
حيث اسم العمود الذي يحوي المفتاح الاساسي RecordType_ID جميل الى حد الان ،، نصل الى نقطة نريد الكود الذي سيقوم من خلاله  باخذ الرقم عند الضغط على احد الازرار و التعامل معه  و من خلال كود الاخ ادريس  نضع هذه الاسطر مع مراعاة DGVName اسم القريد فيو الخاصه  :


كود :
                Dim index As Integer = e.CommandArgument
                Dim ID As String = DGVName.DataKeys(index Mod DGVName.PageSize)(0).ToString() 


كود :
int index = e.CommandArgument;

string ID = DGVName.DataKeys(index % DGVName.PageSize)(0).ToString();

الان استخرجنا  رقم المفتاح  او البرايمري كي  الخاص بالحقل و تستطيع تطبيق اي اجراء  عليه  ،، 


الجزء الاخر المتعلق  بتغيير قيمة احد  الخلايا ،  يوجد  طريقتين لها  ام  انشاء  ميثود  يتم استدعائها  و معالجة القيمة  بناءً عليها 
مثال على ذلك  :  نقوم بتصميم  عمود في القريد فيو  بهذا الشكل  : 
                    <asp:TemplateField HeaderText="حالة الموافقة">
                        <ItemTemplate>
                            <asp:Label ID="GVLblShowFieldActive" runat="server" Text='<%# getProcessingValue(Eval("dataTable_BooleanClmnName")) %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>

حيث  اللون الاحمر تضع به  اسم العمود الذي سيحوي قيمة  Boolean  و  اللون الاخضر هي اسم الـ Method  التي  سنستخدمها لمعالجة القيمة الممرره كالتالي  :
كود :
    ''' <summary> معالجة حقل منطقي في قاعدة البيانات () </summary>
    ''' <param name="Value">قيمة العمود من قاعدة البيانات</param>
    Public Function getProcessingValue(ByVal Value As Object) As Object
        Dim result As String = ""
        If TypeOf (Value) Is Boolean Then
            Select Case Value
                Case True
                    result = "مقبوله"
                Case False
                    result = "مرفوضه"
            End Select
        Else
            Return Value
        End If
        Return result
    End Function
كود :
/// <summary> معالجة حقل منطقي في قاعدة البيانات () </summary>
/// <param name="Value">قيمة العمود من قاعدة البيانات</param>
public object getProcessingValue(object Value)
{
string result = "";
if ((Value) is bool) {
switch (Value) {
case true:
result = "مقبوله";
break;
case false:
result = "مرفوضه";
break;
}
} else {
return Value;
}
return result;
}
هذا بالنسبه للطريقة الاولى  ،  الطريقة الثانيه  و هي  في الحدث     RowDataBound    و هي  عند بناء  صف  او  سطر افقي بالقريد  فيو  فانه يمر بهذا الحدث كل مره  و يفحص قيمة  حقل  Boolean   و يغير  محتوى  خليه بناءً عليه  ،  لنأخذ مثال  صغير  :
كود :
    Protected Sub DGVName_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles DGVName.RowDataBound

        If e.Row.RowType = DataControlRowType.DataRow OrElse e.Row.RowType = DataControlRowType.Separator Then
            Dim rowView As DataRowView = DirectCast(e.Row.DataItem, DataRowView)
            If rowView("BooleanclmnName").ToString.Trim = "0" Then
                e.Row.Cells(4).Text = "تم الرفض"
            ElseIf rowView("BooleanclmnName").ToString.Trim = "1" Then
                e.Row.Cells(4).BackColor = Drawing.Color.FromName("#92D050")
                e.Row.Cells(4).Text = "تم القبول"
                e.Row.Cells(4).ForeColor = Drawing.Color.FromName("#ffffff")
                e.Row.Cells(4).Font.Bold = True
            End If
        End If
    End Sub

كود :
protected void DGVName_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Separator) {
DataRowView rowView = (DataRowView)e.Row.DataItem;
if (rowView("BooleanclmnName").ToString.Trim == "0") {
e.Row.Cells(4).Text = "تم الرفض";
} else if (rowView("BooleanclmnName").ToString.Trim == "1") {
e.Row.Cells(4).BackColor = Drawing.Color.FromName("#92D050");
e.Row.Cells(4).Text = "تم القبول";
e.Row.Cells(4).ForeColor = Drawing.Color.FromName("#ffffff");
e.Row.Cells(4).Font.Bold = true;
}
}
}


رقم 4  في الكود السابق  اي  رقم العمود الذي سيتم  تغيير  محتواه
اسم معرفي : محمد يحيى
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
RE: كيف يمكن برمجة زر داخل gridview - بواسطة myalsailamy - 18-09-16, 02:13 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] gridview responsive khairallah 0 1,705 02-11-20, 02:40 PM
آخر رد: khairallah
  [سؤال] كيف يمكن كتابة هذه المعادلة الجيل 4 3,047 02-02-19, 02:16 AM
آخر رد: الجيل
  كيف يمكن نشر تطبيق asp على شبكة محلية ؟؟ starosta 6 5,160 26-10-18, 09:22 PM
آخر رد: hglogtd
  مشكلة في GridView starosta 3 2,675 21-08-16, 11:27 AM
آخر رد: أبو عمر

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم