PDA

View Full Version : سوال: connectionString و Autopostback



بمب منطقی
پنج شنبه 24 تیر 1389, 15:37 عصر
با سلام خدمت اساتید بخش ASP.NET
من کدی که در زیر ملاحظه می کنید رو تو سی شارپ نوشتم و بدون هیچ ایرادی اجراش کردم.ولی تو ASP.NET به2 مشکل برخورد کردم.اگه میشه منو راهنمایی بفرمائید:

public partial class _Default : System.Web.UI.Page
{
OleDbConnection ODB = new OleDbConnection();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ODB.ConnectionString="provider=Microsoft.Jet.OLEDB.12.0;Data Source=.\\App_Data\\db1.mdb";
}
}
protected void btnTranslate_Click(object sender, EventArgs e)
{
rtxtResult.Text="";
if ((rdoEN.Checked == true) && (txtEN.Text != ""))
{
OleDbDataAdapter ODBD = new OleDbDataAdapter("Select * from English Where English_Word like '%" + txtEN.Text + "%'", ODB);
DataSet DS = new DataSet();
ODBD.Fill(DS, "English");
ODBD = null;
if (DS.Tables["English"].Rows.Count != 0)
{
rtxtResult.Enabled = false;
string str;
for (int j = 0; j < DS.Tables["English"].Rows.Count; j++)
{
str = DS.Tables["English"].Rows[j]["Word_ID"].ToString();
ODBD = new OleDbDataAdapter("Select * from Farsi Where English_ID='" + str + "'", ODB);
ODBD.Fill(DS, "Farsi");
for (int i = 0; i < DS.Tables["Farsi"].Rows.Count; i++)
rtxtResult.Text = rtxtResult.Text + DS.Tables["Farsi"].Rows[i]["Farsi_Word"].ToString() + "\n";
}
DS.Clear();
ODBD = null;
rtxtResult.Enabled = true;
}
}
if ((rdoFA.Checked == true) && (txtFA.Text != ""))
{
OleDbDataAdapter ODBD = new OleDbDataAdapter("Select * from Farsi Where Farsi_Word Like'%" + txtFA.Text + "%'", ODB);
DataSet DS = new DataSet();
ODBD.Fill(DS, "Farsi");
ODBD = null;
if (DS.Tables["Farsi"].Rows.Count != 0)
{
rtxtResult.Enabled = false;
string str;
rtxtResult.Text="";
for (int j = 0; j < DS.Tables["Farsi"].Rows.Count; j++)
{
str = DS.Tables["Farsi"].Rows[j]["English_ID"].ToString();
ODBD = new OleDbDataAdapter("Select * from English Where Word_ID='" + str + "'", ODB);
ODBD.Fill(DS, "English");
rtxtResult.Text="";
for (int i = 0; i < DS.Tables["English"].Rows.Count; i++)
rtxtResult.Text = rtxtResult.Text + DS.Tables["English"].Rows[i]["English_Word"].ToString() + "\n";
}
DS.Clear();
ODBD = null;
rtxtResult.Enabled = true;
}
}
}
protected void txtFA_TextChanged(object sender, EventArgs e)
{
rdoFA.Checked = true;
rdoEN.Checked = false;
}
protected void txtEN_TextChanged(object sender, EventArgs e)
{
rdoFA.Checked = false;
rdoEN.Checked = true;
}

}
1- حتی با وجود اینکه autopostback هر دو(rdoFA, rdoEN)radiobox وtextbox(txtFA , txtEN) رو True کردم،با این وجود وقتی( طبق کد) در textbox ها تغییری صورت میگیره،radiobox های مربوطه،تا بروی یک جای خالی از فرم کلیک نکنم، on و off نمیشن.
2- وقتی بر روی دکمه btnTranslate کلیک میکنم تا عبارت وارد شده در textbox را (طبق کد) در بانک اکسس جستجو کنم، ODBD.Fill(DS, "English"); رو هایلایت میکنه (خطا میگیره) و این پیغام خطا رو نشون میده : The ConnectionString property has not been initialized فکر کنم اشکال از connectionString باشه ولی هرچی باهاش ور رفتم درست نشد.
اینم تصویر صفحه :
http://www.barnamenevis.org/forum/attachment.php?attachmentid=52952&stc=1&d=1279193767

با تشکر فراوان

بمب منطقی
پنج شنبه 24 تیر 1389, 15:40 عصر
در ضمن دیتا فایل مربوطه اکسس ، و محیط توسعه vs2005 هست
:لبخندساده:

A.S.Roma
پنج شنبه 24 تیر 1389, 15:48 عصر
وب با ویندوز فرق می کنه ;)
از OleDbConnection در هر متد یک Instance بگیرید و ConnectionString را ست کنید.

راه های بهتری برای ذخیره کردن ConnectionString و انتساب اون وجود دارد ( استفاده از Web.Config )

بمب منطقی
پنج شنبه 24 تیر 1389, 23:17 عصر
از OleDbConnection در هر متد یک Instance بگیرید و ConnectionString را ست کنید.
انجام دادم نشد!

hlikehamed
جمعه 25 تیر 1389, 01:31 صبح
مقدار کانکشن استرینگ رو اینطور ست کن :

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db1.mdb;Persist Security Info=True

احتمالا مشکلت حل میشه.

مشکل از کانکشن استرینگته.

در ضمن سوال اولت رو هم متوجه نشدم.

hlikehamed
جمعه 25 تیر 1389, 01:35 صبح
اگر نشد توی web.config کانکشن رو اینطور ست کن. از web.config بخون.


<connectionStrings>
<add name="db1ConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db1.mdb;Persist Security Info=True"
providerName="System.Data.OleDb" />

بعد توی کد اینطور ست کن.


ODB.ConnectionString = ConfigurationManager.ConnectionStrings["db1ConnectionString"].ConnectionString;


حتما مشکلت حل میشه چون عملی تست کردم

بمب منطقی
جمعه 25 تیر 1389, 13:20 عصر
دستت درد نکنه.مشکلم رو حل کردی.با درجconnection String تو web.config و تبدیل datasetها به datatable مشکلم حل شد.خدا عوضت بده :لبخندساده:

ولی هنوز مشکل اول رو دارم.بیشتر توضیح میدم:
اگه به کد و تصویر دقت کنید متوجه میشد که دو رویداد (متد) زیر زمانی فراخوانی میشن که متن داخل textbox ها توسط کاربر تغییری کنن.همزمان با این تغییر باید خصیصه check مربوط radiobox روبروی هر textbox روشن و اون یکی خاموش شه.(به کد داخل این دو متد مراجعه کنید متوجه میشید).این کار ساده ایه و انجامش دادم.مشکل اینجاست که بعد از کامپایل،وقتی متنی رو توی textbox مینویسم(تا رویداد textChanged رخ بده) تا روی یک جای خالی از صفحه کلیک ماوس رو انجام ندم،autopostback صورت نمیگیره تا radiobox هام طبق کد داخل دو متد زیر ،روشن و خاموش بشن.

(protected void txtFA_TextChanged(object sender, EventArgs e
(protected void txtEN_TextChanged(object sender, EventArgs e

hlikehamed
جمعه 25 تیر 1389, 15:59 عصر
خودم یه پروژه وب گرفتم حال ندارم رو اون کار کنم میام اینجا همش :گیج: :لبخند: خدا به دادم برسه
احتیاجی به این کارا نیست. برای اینکه radio button ها رو فعال یا غیر فعال کنی. یه تیکه اسکریپت بنویسی کافیه

این یه مثال از چیزی که مد نظرته :




<script language="javascript" type="text/javascript">
function CheckedValue(radioObj)
{
if(radioObj.toString()=="rbfa")
{
document.getElementById('rben').checked = false;
document.getElementById('rbfa').checked = true;
}
if(radioObj.toString()=="rben")
{
document.getElementById('rben').checked = true;
document.getElementById('rbfa').checked = false;
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="text" onfocus="CheckedValue('rben')" />
<input type="text" onfocus="CheckedValue('rbfa')" />
<asp:Panel ID="Panel1" runat="server">
<input id="rben" type="radio" value="en" title="en" runat="server"/>
<input id="rbfa" type="radio" value="fa" title="fa"/>
</asp:Panel>
</div>
</form>
</body>

کارت راه میافته.
در ضمن اگر خواستی توی بیهاند کد از از این input ها استفاده کنی کافیه
این بخش رو به کنترل ها اضافه کنی : runat="server"
موفق باشی

بمب منطقی
جمعه 25 تیر 1389, 17:44 عصر
منم این روزا 3-4 تا پروژه ریخته سرم از بد یا خوب روزگار تو asp تازه کارم.دستت درد نکنه از بابت راهنماییهات :تشویق: