الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن التحكم بحجم الادوات واضافة الادوات ب Edit Mode ل GridView

بدأه Dev_life في 30 يونيو 2010 · 19 رد · 1,261 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني الكرام

واجهت مشكل من جديد بعد بحتي بالأنترنت لم أجد موضوعا يشرح بطريقة سلسة طريقة التحكم في حجم الأدوات أي textbox ب Edit Mode ل Gridview

حتى اني بحت عن طريقة اضافة Dropdownlist او FileUpload الى GridView

الطريقة الأولى التي استعملت في التعامل مع Gridview

    <asp:GridView ID="GrEngins" runat="server" BackColor="White" BorderColor="#CCCCCC"
        BorderStyle="None"  BorderWidth="1px" CellPadding="3" AutoGenerateColumns="False"
         ShowFooter="True" OnRowCancelingEdit="GrEngins_RowCancelingEdit" 
          OnRowDeleting="GrEngins_RowDeleting" OnRowEditing=" GrEngins_RowEditing"
           OnRowUpdating="GrEngins_RowUpdating"  AllowPaging="true"
            OnPageIndexChanging="PageChangin" PageSize="10">
      <Columns>
      <asp:CommandField  ShowSelectButton="true"/>
      <asp:BoundField DataField="IDEngin" HeaderText="IDEngin" ReadOnly="True" />
      <asp:BoundField DataField="Reference" HeaderText="Ref" />
      <asp:BoundField DataField="Designation" HeaderText="Designation" />
      <asp:BoundField DataField="Prix" HeaderText="Prix" />
      <asp:BoundField DataField="Poids" HeaderText="Poids" />
      <asp:BoundField DataField="Description" HeaderText="Description" />
      <asp:BoundField DataField="CategorieID" HeaderText="CategorieID" />
          <asp:CommandField ShowEditButton="True" ShowDeleteButton="True" />
      </Columns>
        <RowStyle ForeColor="#000066" />
        <FooterStyle BackColor="White" ForeColor="#000066" />
        <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
        <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
     </asp:GridView>

هنا في Edit Mode تظهر ادوات Textbox كبيرة فهل من طريقة للتحكم بحجمها؟؟

حاولت استعمال طريقة تانية في التعامل مع GridView ومحاولة اضافة Dropdownlist فقط

    <asp:GridView ID="GrEngins" runat="server" AutoGenerateColumns="False" BackColor="White"
        BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" ForeColor="Black"
        GridLines="Vertical" ShowFooter="true"
         OnRowCancelingEdit="GrEngins_RowCancelingEdit" 
          OnRowDeleting="GrEngins_RowDeleting" OnRowEditing=" GrEngins_RowEditing"
           OnRowUpdating="GrEngins_RowUpdating"  AllowPaging="true"
           >
        <FooterStyle BackColor="#CCCCCC" />
        <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
        <AlternatingRowStyle BackColor="#CCCCCC"
      />
        <Columns>
         <asp:CommandField  ShowSelectButton="true"/>
        <asp:TemplateField HeaderText="IDEngin">
                <ItemTemplate><asp:Label runat="server" Text='<%#eval("IDEngin")%>'></asp:Label></ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Ref">
        <ItemTemplate><asp:Label ID="Label1" runat="server" Text='<%#eval("Reference")%>'></asp:Label></ItemTemplate>
        <EditItemTemplate><asp:TextBox ID="txtRef" runat="server" Text='<%#eval("Reference")%>'></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Designation">
        <ItemTemplate><asp:Label ID="Label1" runat="server" Text='<%#eval("Designation")%>'></asp:Label></ItemTemplate>
        <EditItemTemplate><asp:TextBox ID="txtDesignation" runat="server" Text='<%#eval("Designation")%>'></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Prix">
         <ItemTemplate><asp:Label ID="Label1" runat="server" Text='<%#eval("Prix")%>'></asp:Label></ItemTemplate>
        <EditItemTemplate><asp:TextBox ID="txtPrix" runat="server" Text='<%#eval("Prix")%>'></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
         <asp:TemplateField HeaderText="Poids">
         <ItemTemplate><asp:Label ID="Label1" runat="server" Text='<%#eval("Poids")%>'></asp:Label></ItemTemplate>
        <EditItemTemplate><asp:TextBox ID="txtpoids" runat="server" Text='<%#eval("Poids")%>'></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
         <asp:TemplateField HeaderText="Description">
         <ItemTemplate><asp:Label ID="Label1" runat="server" Text='<%#eval("Description")%>'></asp:Label></ItemTemplate>
        <EditItemTemplate><asp:TextBox ID="txtDescription" runat="server" Text='<%#eval("Description")%>'></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
         <asp:TemplateField HeaderText="Categorie">
         <ItemTemplate><asp:Label ID="Label1" runat="server" Text='<%#eval("CategorieID")%>'></asp:Label></ItemTemplate>
        <EditItemTemplate>
        <asp:DropDownList runat="server" ID="Categories" DataSourceID="DSCat" DataTextField="Nom_Categorie" DataValueField="CategorieID"
        ></asp:DropDownList>
        </EditItemTemplate>
        </asp:TemplateField>
         <asp:CommandField ShowEditButton="True" ShowDeleteButton="True" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="DSCat" runat="server"
     ConnectionString='<%ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString %>'
     SelectCommand="SELECT * FROM ENGINS">
    </asp:SqlDataSource>

عند الضغط على تعديل يظهر هدا الخطأ:

ex.Message = "Le format de la chaîne d'initialisation n'est pas conforme à la spécification qui débute à l'index 0."
#2

السلام عليكم ورحمة الله وبركاته

أخي العزيز Dev_life

بصراحة لم أفهم ما تقصد، ولكن إذا كنت تريد تغيير حجم الأدوات من ناحية التصميم (الطول العرض حجم ولون النص) فيمكنك ذلك عن طريق الـ CSS، كما هو موجود في الـ Code التالي

<% @ PageLanguage="C#" %>
<html>
	<head>
		<title>Using CSS</title>
		<style type="text/css">
			.myTextBox {
				width: your desired width;
				height: your desired height;
			}
		</style>
	</head>
	<body>
		<asp:TextBox ID="whatever" runat="server" CssClass="myTextBox" />
	</body>
</html>

أما بالنسبة لرسالة الخطأ التي تظهر لك لا أستطيع فهمها نظرا لأن لغتي الفرنسية لا تسعفني ولكن يا ليت لو تستطيع كتابة رسالة الخطأ بالإنجليزية :happy:

اتمنى لك التوفيق والنجاح

1
#3

مبدئيا قم بتغيير الـ textbox فى حالة الـ EditMode فقط من

        <EditItemTemplate><asp:TextBox ID="txtDescription" runat="server" Text='<%#eval("Description")%>'></asp:TextBox></EditItemTemplate>

إلى

        <EditItemTemplate><asp:TextBox ID="txtDescription" runat="server" Text='<%#BIND("Description")%>'></asp:TextBox></EditItemTemplate>

يعنى استخدم Bind بدلا من Eval فى الـ Edit

جرب واخبرنى .. ولنكمل حتى تحل المشكلة بإذن الله

1

لله في الآفاق آيات لعـــل = أقلهـــا هو ما إليه هداكا

ولعل ما في النفس من آياته = عجبٌ عجابٌ لو ترى عيناكا

والكون مشحون بأسرار إذا = حاولت تفسيراً لهــا أعياكا

#4

السلام عليكم

Robatic

المشكل في edit mode ليس ب design mode

لاني بالمتال الأول لو لاحظت لم أضف أي textbox بل اوتوماتيكيا يضيفه ال gridview ب edit mode

هده هي الرسالة:

The format of the initialization string does not conform to specification starting at index 0.

أخي وماذا بعد؟

أحييك من جديد

نفس المشكل

ونفس الرسالة

لاحظت ان المشكل يكمن ب Dropdownlist قمت بحدفه ولم تظهر الرسالة

احاول اضافة dropdownlist و fileupload لكن تظهر تلك الرسالة التي سبق ودكرت

#5

اخي الكريم انك لم تحدد خاصية DataSource للجريد فيو حدد DatatSource لها وجرب لعل هذه المشكلة والله اعلم

1
#6
Xhack كتب:

اخي الكريم انك لم تحدد خاصية DataSource للجريد فيو حدد DatatSource لها وجرب لعل هذه المشكلة والله اعلم

المشكلة بتحميل بيانات الى القائمة الاختيار اي لا يستطيع تحميلها

حاول التحقق من جميع الاعمدة+

حاول تغيير سلسلة الاتصال

ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

+ كما ذكر اخي Xhack

بالتوفيق

وجزاكم الله كل خير

In bad state

#7

السلام عليكم

اخواني Xhack و X-File

المشكل ليس ب Gridview

بل حين أضيف Dropdownlist وأحاول ملأه من خلال qldatasource

فحين أضغط على تعديل تظهر تلك الرسالة,وحين لا يكون dropdownlist موجودا فالامر عادي بدون مشاكل

#8

اخي الكريم حاول تخلي الها داتا سورس لحالها

حتى لو اتضريت انو تعمل وحدة تانية بنفس البيانات جرب

In bad state

#9
X-File كتب:

اخي الكريم حاول تخلي الها داتا سورس لحالها

حتى لو اتضريت انو تعمل وحدة تانية بنفس البيانات جرب

لم أفهم ما قصدت يا أخي

ال Gridview أملأها عن طريق كود vb.net وليس بستعمال المعالج

#10

قم بإضافة ObjectDataSource وخلى الداتا سورس للـ DropDown هى الـ ObjectDatasource

لله في الآفاق آيات لعـــل = أقلهـــا هو ما إليه هداكا

ولعل ما في النفس من آياته = عجبٌ عجابٌ لو ترى عيناكا

والكون مشحون بأسرار إذا = حاولت تفسيراً لهــا أعياكا

#11
وماذا بعد؟ كتب:

قم بإضافة ObjectDataSource وخلى الداتا سورس للـ DropDown هى الـ ObjectDatasource

السلام عليكم

الا توجد طريقة اخرى متل طريقة تعبئة Gridview عن طريق الكود فقط؟؟

لاني لم أعرف كيف أتعامل مع هده الاداة

توقفت ب TypeName بحت ولم أفهم لأي غرض يصلح

ولمادا يجب استعماله عوضا عن الطريق العادية

#12

بالتاكيد

 

DropDownList1.DataSource=

DropDownList1.DataValueField =

DropDownList1.DataTextField=

DropDownList1.DataBind();

In bad state

#13

أخي X-File

لم يعمل معي الامر في حالة استعمال sqldatasource مع اني سبق وجربت الامر

لقد حاولت من جديد استعمال detailsView واضافة dropdownlist لكن نفس الامر

وفي حالة ان اضفت معلومات عن طريقة listitem فان الامر يفلح

ففكرت في أن أضيف هده المعلومات عن طريق الكود لكن اجد ان dropdownlist غير موجود لاني أضفته ب EditItemTemplate

فهل من طريقة لأتحكم به عن طريق كود vb.net واضيف ما أريد بدون استعمال أي Datasource؟؟

اضافة لهدا الأمر

اخواني

في حدت RowDeleting و Updating الخاص ب Gridview لمادا يتم تشغيل هدا الحدت مرتين كأني أضفت حلقة

وهدا هو كود الحدف متلا:

    Protected Sub GestionAdmins_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GestionAdmins.RowDeleting
        Try
            OpenConn()
            lblmsg.Text = ""
            Dim IDAdmin As String = GestionAdmins.Rows(e.RowIndex).Cells(0).Text
            SQL(2) = "DELETE FROM ADMINS WHERE IDADMIN=@IDADMIN"
            SQLCMD = New SqlCommand(SQL(2), conn)
            SQLCMD.Parameters.Add("@IDADMIN", SqlDbType.Int).Value = IDAdmin
            SQLCMD.ExecuteNonQuery()
            RemplirGrid()
        Catch ex As Exception
            lblmsg.Text = ex.Message
            lblmsg.ForeColor = Drawing.Color.Red
        End Try
    End Sub
#14

اخى الكريم .. هل متاح رفع الصفحة المراد العمل عليها .. ليتم حل المشكلة بإذن الله ؟؟

لله في الآفاق آيات لعـــل = أقلهـــا هو ما إليه هداكا

ولعل ما في النفس من آياته = عجبٌ عجابٌ لو ترى عيناكا

والكون مشحون بأسرار إذا = حاولت تفسيراً لهــا أعياكا

#15
وماذا بعد؟ كتب:

اخى الكريم .. هل متاح رفع الصفحة المراد العمل عليها .. ليتم حل المشكلة بإذن الله ؟؟

تفضل اخي

هناك صفحتان

لاتختلفان عن بعضهما كتيرا

فقط الاولى أضفت اليها detailsview لكن لم اتمكن من التعامل معه جيدا من خلال لينك التعديل

Test.rar

#16

الحمد لله .. تم الحل

اضف الملف المرفق إلى App_Code

واستبدل الكود التالى مكان كود صفحة EnginsAdmin2.aspx

<%@ Page Language="VB" MasterPageFile="~/MasterAdmin.master" AutoEventWireup="false" CodeFile="EnginsAdmin2.aspx.vb" Inherits="EnginsAdmin2" title="Untitled Page" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:DropDownList ID="DRcategories1" runat="server">
    </asp:DropDownList><br />
    <asp:GridView ID="GrEngins" runat="server" AutoGenerateColumns="False" BackColor="White"
        BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" ForeColor="Black"
        GridLines="Vertical" ShowFooter="true"
         OnRowCancelingEdit="GrEngins_RowCancelingEdit" 
          OnRowDeleting="GrEngins_RowDeleting" OnRowEditing=" GrEngins_RowEditing"
           OnRowUpdating="GrEngins_RowUpdating"  AllowPaging="true"
           >
        <FooterStyle BackColor="#CCCCCC" />
        <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
        <AlternatingRowStyle BackColor="#CCCCCC"
      />
        <Columns>
         <asp:CommandField  ShowSelectButton="True"/>
        <asp:TemplateField HeaderText="IDEngin">
                <ItemTemplate><asp:Label ID="IdEngin" runat="server" Text='<%#Eval("IDEngin")%>'></asp:Label></ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Ref">
        <ItemTemplate><asp:Label ID="lblRef" runat="server" Text='<%#Eval("Reference")%>'></asp:Label></ItemTemplate>
        <EditItemTemplate><asp:TextBox  Width="20px" ID="txtRef" runat="server" Text='<%#Bind("Reference")%>'></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Designation">
        <ItemTemplate><asp:Label ID="lbldesignation" runat="server" Text='<%#Eval("Designation")%>'></asp:Label></ItemTemplate>
        <EditItemTemplate><asp:TextBox ID="txtDesignation" runat="server" Text='<%#Bind("Designation")%>' Width="128px"></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Prix">
         <ItemTemplate><asp:Label ID="lblprix" runat="server" Text='<%#Eval("Prix")%>'></asp:Label></ItemTemplate>
        <EditItemTemplate><asp:TextBox ID="txtPrix" runat="server" Text='<%#Bind("Prix")%>' Width="72px"></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
         <asp:TemplateField HeaderText="Poids">
         <ItemTemplate><asp:Label ID="lblpoid" runat="server" Text='<%#Eval("Poids")%>'></asp:Label></ItemTemplate>
        <EditItemTemplate><asp:TextBox ID="txtpoids" runat="server" Text='<%#Bind("Poids")%>' Width="80px"></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
         <asp:TemplateField HeaderText="Description">
         <ItemTemplate><asp:Label ID="lbldescription" runat="server" Text='<%#Eval("Description")%>'></asp:Label></ItemTemplate>
        <EditItemTemplate><asp:TextBox ID="txtDescription" runat="server" Text='<%#Bind("Description")%>'></asp:TextBox></EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Image">
        <ItemTemplate>
        <asp:Label ID="Pic" runat="server" Text='<%#Eval("Image")%>'></asp:Label>
        </ItemTemplate>
        <EditItemTemplate>
        <asp:FileUpload runat="server" ID="UpImage1" Width="200px" />
        </EditItemTemplate>
                </asp:TemplateField>
         <asp:TemplateField HeaderText="Categorie">
         <ItemTemplate><asp:Label ID="Label5" runat="server" Text='<%#Eval("CategorieID")%>'></asp:Label></ItemTemplate>
         <EditItemTemplate>
             <asp:DropDownList ID="DRCat" DataSourceID="ObjectDataSource1" runat="server" 
                 DataTextField="Nom_Categorie" DataValueField="CategorieID"  >
             </asp:DropDownList>
                      </EditItemTemplate>
         </asp:TemplateField>
         <asp:CommandField ShowEditButton="True" ShowDeleteButton="True" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="DSCat" runat="server"
     ConnectionString='<%ConnectionStrings:ConnectionString%>'
     SelectCommand="SELECT * FROM Categories">
    </asp:SqlDataSource>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
        SelectMethod="GetAllCategories" TypeName="MyBusinessLayer"></asp:ObjectDataSource>
         </asp:Content>

وجرب وعرفنى

MyBusinessLayer.vb

لله في الآفاق آيات لعـــل = أقلهـــا هو ما إليه هداكا

ولعل ما في النفس من آياته = عجبٌ عجابٌ لو ترى عيناكا

والكون مشحون بأسرار إذا = حاولت تفسيراً لهــا أعياكا

#17

السلام عليكم

جزاك الله خيرا اخي وماذا بعد؟

ممكن تشرح لي لمادا لم يتوافق dropdownlist مع sqldatasource ولمادا أيضا نجد ان dropdownlist الموجود ب EditItemTemplate لايمكن التحكم به عن طريق كود vb؟؟

#18

بالنسبة لأى Server Control فينمت التحكم به عن طريق الكود .. لكن كيف ..؟؟

فى حالة الـ GridView فهى من الممكن أن تحتوى على مجموعة من الأدوات بداخلها >> ففى الحقيقة .. أن هذا الكنترول اللى بالداخل ،، لا يعتبر انه موجود مباشرة على الـ Form

ودعنى اوضح لك أمرا .. تخيل أنك اضفت DropDownList فى الـ GridView .. وأعطيت الـ DropDown اسم wddlEngine تمام ؟

وجيت فى الكود كتبت

wddlEngine.DataSource = anything

تتوقع يتعامل مع أى كنترول فيهم فى حالة مثلا ان هناك 5 صفوف فى الـ Grid ؟؟؟

ففى هذه الحالة يلزمك أن تقوم بعمل FindControl على صف معين فى الـ Grid .. وتتعامل معه بدلالة هذا الصف

واضح ؟

لله في الآفاق آيات لعـــل = أقلهـــا هو ما إليه هداكا

ولعل ما في النفس من آياته = عجبٌ عجابٌ لو ترى عيناكا

والكون مشحون بأسرار إذا = حاولت تفسيراً لهــا أعياكا

#19
وماذا بعد؟ كتب:

بالنسبة لأى Server Control فينمت التحكم به عن طريق الكود .. لكن كيف ..؟؟

فى حالة الـ GridView فهى من الممكن أن تحتوى على مجموعة من الأدوات بداخلها >> ففى الحقيقة .. أن هذا الكنترول اللى بالداخل ،، لا يعتبر انه موجود مباشرة على الـ Form

ودعنى اوضح لك أمرا .. تخيل أنك اضفت DropDownList فى الـ GridView .. وأعطيت الـ DropDown اسم wddlEngine تمام ؟

وجيت فى الكود كتبت

wddlEngine.DataSource = anything

تتوقع يتعامل مع أى كنترول فيهم فى حالة مثلا ان هناك 5 صفوف فى الـ Grid ؟؟؟

ففى هذه الحالة يلزمك أن تقوم بعمل FindControl على صف معين فى الـ Grid .. وتتعامل معه بدلالة هذا الصف

واضح ؟

تمام يا أخي

جزاك الله خيرا

#20

السلام عليكم

شباب بالنسبة لمشكل التحديت والتعديل

لمادا يتكرر مرتين في كل عملية كأننا استعملنا حلقة تكرارية

هدا متال عن عملية الحدف متلا

    Protected Sub GrEngins_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GrEngins.RowDeleting
        Dim ID As String
        ID = GrEngins.Rows(e.RowIndex).Cells(0).Text
        SQL(1) = "DELETE FROM ENGINS WHERE IDENGIN=@IDENG"
        SQLCMD = New SqlCommand(SQL(1), conn)
        SQLCMD.Parameters.Add("@IDENG", SqlDbType.Int).Value = ID
        SQLCMD.ExecuteNonQuery()
        RemplirGrid("SELECT * FROM ENGINS")
    End Sub

رغم اني استعمل e.cancel=true

فما المشكل او الخلل في الكود؟؟

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…