برگزیده های پرشین تولز

مشکل در ادیت کردن مطلب

ma_christian

Registered User
تاریخ عضویت
25 ژانویه 2007
نوشته‌ها
368
لایک‌ها
2
محل سکونت
Tehran
سلام

ممکن است یک توضیحی درباره ادیت کردن مطالبی که در دیتابیس ثبت شده بدهید. اینکه چگونه می توانیم اینکار رو بکنیم ... چند تا راه رو امتحان کردم نشد ... :(
من با VB.NET کار می کنم . ما باید مطالب رو حاضر کنیم در یک سری تکست باکس و بعد دوباره اونها رو ویرایش کنیم (که این قسمت دومش چیز خاصی نداره)

ممنون میشم کمک کنید ...​
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
مشکلت چیه ؟ دیتابیست چیه !
چیکارا کردی تا به حال که نشده ؟؟
احتمال دیتابیست اکسز یا XML نیست ؟
میتونی ورود اطلاعات کنی ولی آپدیت نه ؟ای ورود هم نمیتونی انجام بدی ؟
 

ma_christian

Registered User
تاریخ عضویت
25 ژانویه 2007
نوشته‌ها
368
لایک‌ها
2
محل سکونت
Tehran
ورود رو خیلی راحت می تونم انجام بدم.
برای حاضر کردن نوشته ها هم از ریپیتر استفاده می کنم.

اما خوب نمی تونم اونها رو در یک تکست باکس حاضر کنم.
اتفاقا بعد از درج این تاپیک یک ریپیتر ساده درست کردم و توی اون یک تکست باکس گذاشتم و مقادیر مورد نظر رو هم تونستم در تکست باکس حاضر کنم ... اما اسمش توسط فرم و ریپیتر عوض میشه بصورت:


کاری که من کردم:
PHP:
<%@ Page Language="VB"%>
<head id="head1" runat="server" />
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %> 
<%@ Import Namespace="System.Data.SQLClient" %>
<script runat="server">
    Sub page_load()
        Dim dbconn, sql, dbcomm, dbread
        dbconn = New OleDbConnection("..............................")
        dbconn.Open()
        sql = "SELECT title FROM table where Id='" & Request.QueryString("Id") & "'"
        dbcomm = New OleDbCommand(sql, dbconn)
        dbread = dbcomm.ExecuteReader()
        editpost.DataSource = dbread
        editpost.DataBind()
        dbread.Close()
        dbconn.Close()
    End Sub
    
    Sub update(ByVal Source As Object, ByVal E As EventArgs)
        Dim MySQL As String = "update table set title=@title where Id='" & Request.QueryString("Id") & "'"
        Dim myConn As SqlConnection = New SqlConnection("..............................")
        Dim Cmd As New SqlCommand(MySQL, myConn)
        myConn.Open()
        'Cmd.Parameters.Add(New SqlParameter("@title", TEST.Text))
        Cmd.ExecuteNonQuery()
        myConn.Close()
        Response.Redirect("edit.aspx")     
    End Sub

</script>
<html>
<body>
<form runat="server" id="frm_edit">
  <asp:repeater ID="editpost" runat="server">
    <ItemTemplate>
        <asp:TextBox Font-names="Tahoma" ID="TEST" runat="server" value='<%#Container.DataItem("Title")%>' Width="500px"></asp:TextBox>
        <asp:button OnClick="update" id="submit" Font-Names="Tahoma"  Text="submit" runat="server" Width="140px" Height="27px" />
    </ItemTemplate>
  </asp:repeater>
</form>
</body>
</html>

خروجی داده شده: (بدون ارور) - یک خط آپدیت رو برای اجرا کامنت کردم
PHP:
<head id="head1"><title>

</title></head>


<html>
<body>

<form name="frmedit" method="post" action="editpost.aspx?Id=23" id="frm_edit">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTExMjM3NzcwMzMPZBYCAgMPZBYCAgEPFgIeC18hSXRlbUNvdW50AgEWAmYPZBYCAgEPD2QWAh4FdmFsdWUFgQHYtNis2LHbjNin2YY6INiz2KfYstmF2KfZhuKAjNmH2KfZiiDYr9mI2YTYqtmKINmIINi02LHZg9iq4oCM2YfYp9mKINiu2LXZiNi12Yog2K/YsSDYqtmD2YXZitmEINio2KfYuiDZh9mG2LEg2KjZhSDZg9mF2YMg2YPZhtmG2K9kZCN3OOkvDWYJoA5tgqKnHtLn6Nlj" />
</div>
<input name="editpost$ctl00$editpost_ctl00_TEST" type="text" id="editpost_ctl00_editpost_ctl00_Test" value="...... values ......." style="font-family:Tahoma;width:500px;" />
<input type="submit" name="editpost$ctl00$submit" value="submit" id="editpost_ctl00_submit" style="font-family:Tahoma;height:27px;width:140px;" />
<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwKWwN7WBwL7rs6zAwLT+OWfBnnC+Ww6mw065ZSI8OE5zoQrt0p7" />
</div></form>
</body>
</html>


که موقع آپدیت کردن ارور می گیره که مثلا فلان تکست باکس وجود نداره چون خودش اسمش رو عوش می کنه

دیتابیسم هم MSSQL هست.

ممنون و ببخشید
 

ma_christian

Registered User
تاریخ عضویت
25 ژانویه 2007
نوشته‌ها
368
لایک‌ها
2
محل سکونت
Tehran
دوستان عزيز كمك نمي كنيد؟!

منتظر هستم ...
 

ma_christian

Registered User
تاریخ عضویت
25 ژانویه 2007
نوشته‌ها
368
لایک‌ها
2
محل سکونت
Tehran
يكم راهنمايي مي كنيد كه چكار بايد بكنم؟
ممنون
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
يكم راهنمايي مي كنيد كه چكار بايد بكنم؟
ممنون


راه ساده اینه که یه sqldatasource بندازی تو صفحه و با ویزاردش اون رو کانفیگ کنید
بعد هم یه formview بیارید و به sqldatasource ، بایند کنید
 

ma_christian

Registered User
تاریخ عضویت
25 ژانویه 2007
نوشته‌ها
368
لایک‌ها
2
محل سکونت
Tehran
داشتم یکمی با این موضوع کلنجار می رفتم گفتم این رو هم امتحان کنم:

ببینید من برای دریافت داده ها و آپدیت آنها از کد زیر استفاده کردم.
مشکل این هست که وقتی می خواهم آپدیت کنم چون در متد page_load دوباره اطلاعات بازخوانی میشه پس مقدار تکست باکس همون مقدار قبلی میشه. پس در ظاهر هیچ چیزی آپدیت نمیشه.
چون مجبور هم هستم فارسی ثبت کنم پس باید فرمم runat="server" باشه.

PHP:
    Sub page_load(ByVal Source As Object, ByVal E As EventArgs)
        Dim DBConn As New OleDbConnection, dsBindData As New DataSet, DBCommand As OleDbDataAdapter
        DBConn = New OleDbConnection("...")
        DBCommand = New OleDbDataAdapter("Select * from myTable ", DBConn)
        DBCommand.Fill(dsBindData, "myTable")
        username.text = dsBindData.Tables("myTable").Rows(0).Item("fldTable")
        DBConn.Close()
        
    End Sub
    Sub submiteditprofile(ByVal Source As Object, ByVal E As EventArgs)
        Dim MySQL As String = "UPDATE myTable SET fldTable=@username"
        Dim myConn As SqlConnection = New SqlConnection("...")
        Dim Cmd As New SqlCommand(MySQL, myConn)
        myConn.Open()
        Cmd.Parameters.Add(New SqlParameter("@username", username.Text))
        Cmd.ExecuteNonQuery()
        myConn.Close()
    End Sub
 

amin_lili

کاربر تازه وارد
تاریخ عضویت
24 آپریل 2007
نوشته‌ها
532
لایک‌ها
2
سن
43
محل سکونت
ای کاش آنجا ...
دوست عزیز اصولا کدهایی که در Page_Load استفاده میشن رو باید بررسی کنی ببینی آیا باید در هر عملیات post back اجرا بشن یا فقط یکبار و اونهم موقع لود شدن صفحه اجرا بشن ؟
هر بار که یکی از متدهای سروری شامل کلیک بر روی یک دگمه و ... فراخوانی می شن ابتدا متد Page_Load اجرا میشه بنابراین طبیعیه که تمام کدهای درون این متد اجرا می شن . پس در مثال شما دوباره ریپیتر پر میشه و در نتیجه تکست باکس مقداری که شما وارد کردی رو از دست می ده . بنابراین شما باید جلو این قضیه رو بگیرید.
برای این کار باید مشخص کنید که کدام دسته از کدها باید فقط یکبار و آنهم هنگام لود شدن صفحه اجرا بشن . با شرط زیر درون متد Page_Loadمی تونید این کار رو انجام بدید :
کد:
if(!IsPostBack()) 
{
//your code
}
 
بالا