View Full Version : سوال: خالي كردن dropdownlist در gridview
mandana.k
یک شنبه 19 اردیبهشت 1389, 15:57 عصر
دوستان عزيز من يك برنامه تحت webنوشته ام با VB.net 2008 كه در آن يك gridview است كه اين gridview داراي دوستون dropdownlist مي باشد كه اين dropdownlist داراي يك سري اطلاعات مي باشد چگونه وقتي صفحه load مي شود مي توان اين dropdownlist ها خالي نشان داده شود تا با انتخاب بتوان آن را پركرد مثلا در برنامه هاي windows base ما در page_load مينوشتيم combobox1.selectindex=-1
spring69
دوشنبه 20 اردیبهشت 1389, 00:56 صبح
سلام دوست عزیز.
ایندکس 1- در DropDownList کاربرد نداره.
این کد یه آیتم به خونه ی صفرم DropDownList اضافه میکنه با متن please select one. این کد رو در رویداد RowDataBound مربوط به GridView بنویس:
If e.Row.RowType = DataControlRowType.DataRow Then
Dim ddl As DropDownList = DirectCast(e.Row.FindControl("DropDownList1"), DropDownList)
ddl.Items.Insert(0, New ListItem("Please Select One Item", "Please Select One Item"))
End If
Good Luck
mandana.k
دوشنبه 20 اردیبهشت 1389, 09:50 صبح
دوست عزيز من از اين كد استفاده كردم ولي روي خط آخر
ddl.Items.Insert(0, New ListItem("Please Select One Item", "Please Select One Item"))
اين error رامي دهد
Object reference not set to an instance of an object
آيا به جاي "Please Select One Item"چيزي بايد نوشته شود اين مورد خيلي ضروري است
spring69
دوشنبه 20 اردیبهشت 1389, 10:36 صبح
دوست عزيز من از اين كد استفاده كردم ولي روي خط آخر
ddl.Items.Insert(0, New ListItem("Please Select One Item", "Please Select One Item"))اين error رامي دهد
Object reference not set to an instance of an object
آيا به جاي "Please Select One Item"چيزي بايد نوشته شود اين مورد خيلي ضروري است
من دوباره امتحان کردم و مشکلی نداشت.
به جای DropDownList1 ، دقیقا نام DropDownList خودت که در DataGridView داری وارد کن.
به جای Please select one هرچی میخوای بنویس.
Good Luck
Muhammad-Ali
چهارشنبه 16 تیر 1389, 13:33 عصر
خیلی گشتم. خیلیها هم با این مسئله مشکل داشتند. بیشترشون رو با دقت دیدم، اما نمی دونم مشکل این کدی که از C# به VB تبدیل چیه!
در رویداد GridView1_RowDataBound پیغام object reference is not set to an instance of an object میده!؟ دو روز دارم میگردم و به جایی نرسیدم. لطفا کمک کنید ممنون.
وقتی این ها رو درخواست میکنم:
Dim strFF As String = myDataRowView("Name").ToString()
Dim strSize As String = myDataRowView("Size").ToString()
این Error رو میده:
Object reference not set to an instance of an object.
Imports System.Data
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Partial Public Class User
Inherits System.Web.UI.Page
Dim strPath As String = ""
Dim strFolderName As String = ""
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
If Not Page.IsPostBack Then
Call Show()
End If
End Sub
Private Sub Show()
ViewState("FN") = System.Web.HttpContext.Current.Request("FN")
If (ViewState("FN") IsNot Nothing) AndAlso (ViewState("FN").ToString() <> "") Then
strFolderName = ViewState("FN").ToString()
End If
strPath = System.Web.HttpContext.Current.Server.MapPath("") & "\" & strFolderName
Dim myDataTable As New System.Data.DataTable()
myDataTable.Columns.Add("#", GetType(System.Int32))
myDataTable.Columns.Add("Name", GetType(System.String))
myDataTable.Columns.Add("Size", GetType(System.Int32))
myDataTable.PrimaryKey = New System.Data.DataColumn() {myDataTable.Columns("#")}
myDataTable.Columns("#").AutoIncrement = True
myDataTable.Columns("#").AutoIncrementSeed = 1
Dim myDataRow As System.Data.DataRow = Nothing
Dim myDirectoryInfo As New System.IO.DirectoryInfo(strPath)
For Each CurrentDirectory As System.IO.DirectoryInfo In myDirectoryInfo.GetDirectories()
myDataRow = myDataTable.NewRow()
myDataRow("Name") = "*" & CurrentDirectory.Name
myDataRow("Size") = System.DBNull.Value
myDataTable.Rows.Add(myDataRow)
Next
For Each oFileInfo As System.IO.FileInfo In myDirectoryInfo.GetFiles()
myDataRow = myDataTable.NewRow()
myDataRow("Name") = oFileInfo.Name
myDataRow("Size") = oFileInfo.Length
myDataTable.Rows.Add(myDataRow)
Next
GridView1.Visible = True
GridView1.DataSource = myDataTable
GridView1.DataBind()
End Sub
Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs)
GridView1.PageIndex = e.NewPageIndex
Call Show()
End Sub
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
Dim myDataRowView As System.Data.DataRowView = DirectCast(e.Row.DataItem, System.Data.DataRowView)
Dim strFF As String = myDataRowView("Name").ToString()
Dim strSize As String = myDataRowView("Size").ToString()
If e.Row.RowType.ToString() <> System.Web.UI.WebControls.ListItemType.Header.ToSt ring() AndAlso e.Row.RowType.ToString() <> System.Web.UI.WebControls.ListItemType.Footer.ToSt ring() Then
e.Row.Cells(0).HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center
e.Row.Cells(0).VerticalAlign = System.Web.UI.WebControls.VerticalAlign.Middle
e.Row.Cells(0).Width = System.Web.UI.WebControls.Unit.Pixel(50)
e.Row.Cells(0).ForeColor = System.Drawing.Color.DarkOliveGreen
e.Row.Cells(0).Font.Bold = True
e.Row.Cells(0).Font.Name = "Verdana"
e.Row.Cells(0).Font.Size = System.Web.UI.WebControls.FontUnit.Point(8)
e.Row.Cells(0).Text = System.Convert.ToString(e.Row.DataItemIndex + 1)
End If
Dim CurrentHpr As System.Web.UI.WebControls.HyperLink = DirectCast(e.Row.FindControl("hprFolders"), System.Web.UI.WebControls.HyperLink)
If strFF.Contains("*") Then
strFF = strFF.Substring(1)
CurrentHpr.NavigateUrl = "FileManager.aspx?FN=" & strFolderName & "\" & strFF
CurrentHpr.CssClass = "gird"
End If
CurrentHpr.Text = strFF
e.Row.Cells(1).HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center
e.Row.Cells(1).VerticalAlign = System.Web.UI.WebControls.VerticalAlign.Middle
e.Row.Cells(1).Width = System.Web.UI.WebControls.Unit.Pixel(150)
e.Row.Cells(1).Font.Name = "Verdana"
e.Row.Cells(1).Font.Bold = True
e.Row.Cells(1).Font.Size = System.Web.UI.WebControls.FontUnit.Point(8)
e.Row.Cells(1).ForeColor = System.Drawing.Color.Navy
If strSize IsNot Nothing AndAlso strSize <> "" Then
Dim CurrentLbl As System.Web.UI.WebControls.Label = DirectCast(e.Row.FindControl("lblSize"), System.Web.UI.WebControls.Label)
CurrentLbl.Text = strSize & " KB "
End If
e.Row.Cells(2).HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center
e.Row.Cells(2).VerticalAlign = System.Web.UI.WebControls.VerticalAlign.Middle
e.Row.Cells(2).Width = System.Web.UI.WebControls.Unit.Pixel(150)
e.Row.Cells(2).Font.Name = "Verdana"
e.Row.Cells(2).Font.Bold = True
e.Row.Cells(2).Font.Size = System.Web.UI.WebControls.FontUnit.Point(8)
e.Row.Cells(2).ForeColor = System.Drawing.Color.Orange
End Sub
Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As GridViewSortEventArgs)
e.SortExpression = "Name"
e.SortDirection = SortDirection.Ascending
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Call Show()
End Sub
End Class
Muhammad-Ali
پنج شنبه 17 تیر 1389, 01:39 صبح
بالاخره جواب سوالم رو از تو MSDN خود مایکروسافت پیدا کردم. مینویسم شاید بعدا به درد یه بدبختی مثل من بخوره. البته از فلسفش بی اطلاعم که چطور کار میکنه، چون کارمم این نیست بی خیال، ولی اگر اساتید یه لطفی کنن بگن قضیه چیه، بازم ممنون میشم.
راه حل: اول شروع تابع GridView1_RowDataBound باید این شرط رو بررسی کنین، و در صورت صحیح بودن دستوراتتون رو اجرا کنه. شرط:
If e.Row.RowType = DataControlRowType.DataRow Then
به طور کامل:
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
.
.
.
کدهای شما
.
.
.
End If
End Sub
BreakPoint هم که گذاشتم، برای بار سوم که IF رو چک میکنه، میفته داخل IF و دستورات رو اجرا میکنه. دو بار اولی چیرو بررسی میکنه؟ :متفکر:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.