ورود

View Full Version : مشکل با تمپلیت فیلد



Hamid_PaK
سه شنبه 03 اردیبهشت 1387, 09:59 صبح
سلام؛
توی تمپیلت فیلد یکسری کنترل دارم (DropDownList, ListBox ...)
حالا وقتی می خوام که در هنگام لود شدن صفحه و یا در رویدادهای دیگه این کنترلها رو دستی مقدار دهی کنم نمی تونم و خطا مربوط به پیدا نشدن کنترلهاست.

بطور مثال در یک DetailsView و مود Edit در رویداد Load بعد از یکبار تغییر مود به ReadOnly و باز گشت دیگه نمی تونم در رویداد Load و حتی LoadCompleted صفحه کنترلهای مورد نظر رو پیدا کنم.

لطفا اساتید راهنمایی کنند.

یا حق...

nazaninam
سه شنبه 03 اردیبهشت 1387, 10:17 صبح
خوب قبل از اینکه دنبال کنترل بگردی Mode رو عوض کن یا اینکه DefaultMode رو به Edit تغییر بده

Hamid_PaK
سه شنبه 03 اردیبهشت 1387, 10:35 صبح
مجبورم که مود رو تغییر بدم و اینطوری که شما میگید فقط یکبار جواب می ده و بعد از تغییر دوباره گم و گور می شه.
در کل به نظر من این مشکل یک باگ است، چرا !؟ شاید خیلی ها بگن که نه .Net باگ نداره ولی من که می گم داره خودتون هم می تونید تست کنید!
زمانی که رویداد PageCompleted اجرا میشه باید تمامیه کنترلها بطور کامل لود شده باشن ولی در این مثالی که من زدم هنوز تمگلیت فیلدها تکمیل نشده اند ولی بعد از بارگذاری صفحه کنترل با همان مشخصات دیده می شود!

یا من در زمان درست بدنبال کنترلها نمی گردم و یا این یک باگ است.

یا حق ...

Hamid_PaK
سه شنبه 03 اردیبهشت 1387, 10:47 صبح
این هم اطلاعات مثال مورد نظر:
محتوای صفحه :

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="testing_dv.aspx.vb" Inherits="testing_dv" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Testing</title>
<meta name="generator" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
</head>
<body style="direction: rtl">
<form id="form1" runat="server">
<div>
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" Width="600px" BackColor="Gray">
<Fields>
<asp:TemplateField HeaderText="فیلد شماره یک">
<EditItemTemplate>
<asp:ListBox ID="lb_1" runat="server" Width="100%" Rows="8"></asp:ListBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:ListBox ID="lb_1" runat="server" Width="100%" Rows="8"></asp:ListBox>
</InsertItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="فیلد شماره دو" DataField="field_01" />
</Fields>
</asp:DetailsView>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
</body>
</html>


محتوای کد:

Imports System.Data.SqlClient

Partial Class testing_dv
Inherits System.Web.UI.Page

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
If Not Page.IsPostBack Then
DetailsView1.DataSource = MeClass.SqlExecReader("SELECT * FROM meters")
DetailsView1.DataBind()
End If
End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
If DetailsView1.CurrentMode = DetailsViewMode.Edit Then
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly)
Else
DetailsView1.ChangeMode(DetailsViewMode.Edit)
End If
Dim a As ListBox = DirectCast(DetailsView1.FindControl("lb_1"), ListBox)
If Not IsNothing(a) And DetailsView1.CurrentMode = DetailsViewMode.Edit Then
For i As Integer = 0 To 50
a.Items.Add("item" & i)
Next
End If
End Sub
End Class


اساتید پاسخ بدهند لطفا

یا حق ...

Hamid_PaK
سه شنبه 03 اردیبهشت 1387, 11:58 صبح
حالا اونهایی که میگن این باگ نیست به این سوال جواب بدن:

آیا رویداد LoadCompleted صفحه آخرین روالی است که در ساخت صفحه و جزئیات آن اجرا خواهد شد؟؟

یا حق ...