PDA

View Full Version : سوال: چگونه تکراری نبودن نام کاربری را در دیتابیس توسط کنترل های اعتبار سنجی بسنجد؟؟



raha1234567
یک شنبه 27 فروردین 1391, 10:17 صبح
سلام دوستان.
میشه توسط کنترل های اعتبار سنجی تعیین کنیم که نام های کاربری تکراری نباشه در دیتابیس و در صورت تکراری بودن اخطار بده؟؟
اگه میشه با کدومش و چطوری

2. من برای یکسان بودن فیلد های 2 textbox از کنترل comper validater استفاده میکنم ولی کدش رو نمی دونم یعنی میدونم باید بنویسم



if(page.isvalidatur(



اما اجرا نمیده.یعنی هم ثبت نام انجام میشه هم اخطار میده

alonemm
یک شنبه 27 فروردین 1391, 13:28 عصر
باسلام:

میتونید توسط یک UpdatePanel و Event مربوطه به OnTextChanged تکس باکس مورد نظر با یک متد Static این پروسه رو پیاده سازی کنید و در صورت وجود کاربر فوکس رو به همین کنترل بدید و یک متن خطا در لیبل کناری بنویسید و تکس باکس رو به رنگ قرمز تغییر بدید.


با این راهنمایی ها شما شروع به نوشتن کنید در هر قسمت مشکل داشتید مطرح کنید.

raha1234567
یک شنبه 27 فروردین 1391, 13:44 عصر
اینا رو که گفتید من نفهمیدم ؟ :متعجب::لبخند::متعجب::لبخند:: تعجب::لبخند:

alonemm
یک شنبه 27 فروردین 1391, 14:08 عصر
اینا رو که گفتید من نفهمیدم ؟ :متعجب::لبخند::متعجب::لبخند:: تعجب::لبخند:

دوست من شما :
شما میتونی فرم رو داخل یک کنترل UpdatePanel بزاری و AutoPostBack تکس باکسی که نام کاربری رو مشخص میکنه فعال کنید.
حالا در رویداد OnTextChanged این تکس باکس میتونید عملیات چک کردن این که این نام کاربری در جدول پایگاه داده شما وجود دارد رو تست کنید.
اگر وجود نداشت یک پیغام خطا در یک کنترل لیبل در کنار این تکس باکس بنویسید و رنگ این تکس باکس رو قرمز کنید و فکوس رو به این کنترل بفرستید.

به مثال زیر دقت کنید:

<asp:UpdatePanel runat="server" ID="up1">
<ContentTemplate>
Username: <asp:TextBox runat="server" id="Username"
AutoPostBack="true" OnTextChanged="Username_Changed" />
<div runat="server" id="UserAvailability"></div><br />
</ContentTemplate>
</asp:UpdatePanel>



protected void Username_Changed(object sender, EventArgs e)
{
if (Membership.GetUser(Username.Text) != null)
{
UserAvailability.InnerText = "Username taken, sorry.";
UserAvailability.Attributes.Add("class", "taken");
}
else
{
UserAvailability.InnerText = "Username available!";
UserAvailability.Attributes.Add("class", "available");
}
}




#UserAvailability {
padding-left: 22px;
background-position: left;
background-repeat: no-repeat;
}

.taken {
background-image: url(taken.gif);
}

.available {
background-image: url(available.gif);
}


مثل شکل زیر:
http://encosia.com/blog/media/images/username-availability.png



موفق باشید.

alonemm
یک شنبه 27 فروردین 1391, 14:09 عصر
اگر از MemberShip استفاده نمی کنید میتونید رویداد بالا رو مثل زیر تغییر بدید:

protected void Username_Changed(object sender, EventArgs e)
{
SqlDataReader rdr = null;
SqlConnection con = null;
SqlCommand cmd = null;

try
{
// Open connection to the database
string ConnectionString = "server=xeon;uid=sa;"+
"pwd=manager; database=northwind";
con = new SqlConnection(ConnectionString);
con.Open();

// Set up a command with the given query and associate
// this with the current connection.
string CommandText = "SELECT username tb WHERE (username=@username)";
cmd = new SqlCommand(CommandText);
cmd.Connection = con;

// Add LastName to the above defined paramter @Find
cmd.Parameters.Add(
new SqlParameter(
"@username", // The name of the parameter to map
System.Data.SqlDbType.NVarChar, // SqlDbType values
20, // The width of the parameter
"username")); // The name of the source column

// Fill the parameter with the value retrieved
// from the text field
cmd.Parameters["@username"].Value = username.Text;

// Execute the query
rdr = cmd.ExecuteReader();
if(rdr.HasRows)
som code ......

}
catch(Exception ex)
{
// Print error message
MessageBox.Show(ex.Message);
}
finally
{
// Close data reader object and database connection
if (rdr != null)
rdr.Close();

if (con.State == ConnectionState.Open)
con.Close();
}

}

razeghaik1
سه شنبه 28 شهریور 1391, 20:21 عصر
دوستان یه مشکلی که اینجا هست اینه که وقتی ما قصد چک کردن تکراری نبودن ایمیل را در دیتا بیس داریم ابتدا کد مربوط به چک کردن اجرا می شود و بعد اعتبار سنجی ها برای نوشتن صحیح ایمیل !
و این موضوع بسیار مشکل ساز است.به چه روشی می شود کاری کرد که ابتدا اعتبار سنجی با استفاده از کامپوننت های validation انجام شود و سپس عملیات مربوط به چک کردن ایمیل در دیتا بیس انجام شود؟!
آیا روشی روجود دارد که بعد از اطمینان از اینکه اعتبار سنجی کامل صورت گرفت عملیات چک کردن در دیتا بیس انجام شود؟
با تشکر فراوان

اینم کد من


protected void TextBox1_TextChanged(object sender, EventArgs e)
{
string un = TextBox1.Text;
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["con_mmobilepr"].ConnectionString.ToString());
con.Open();
SqlCommand cmd = new SqlCommand("login_site_un", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@un", un);
SqlDataReader c = cmd.ExecuteReader();
if (!c.Read())
{
Image2.Visible = false;
Image1.Visible = true;
Label22.Visible = true;
Label22.Text = "این نام کاربری آزاد می باشد";
Label22.ForeColor = System.Drawing.Color.Blue;
}
else
{
Image1.Visible = false;
Image2.Visible = true;
Label22.Visible = true;
Label22.Text = "این نام کاربری قبلا ثبت شده است !";
Label22.ForeColor = System.Drawing.Color.Red;
TextBox1.Text = "";
}
}

mdt414
سه شنبه 28 شهریور 1391, 22:56 عصر
برای چک کردن آدرس ایمیل از regularexpression Validator استفاده کنید:

<asp:RegularExpressionValidator ID="revEmail" runat="server" ControlToValidate="txtEmail"
Display="Dynamic" ErrorMessage="آدرس ایمیل وارد شده صحیح نیست" ForeColor="Red"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">→</asp:RegularExpressionValidator>

و برای بررسی نام کاربری که آیا تکراری هست یا نه از Custom Validator :


<asp:CustomValidator ID="cvUserName" runat="server" ControlToValidate="txtUserName"
Display="Dynamic" ErrorMessage="این نام کاربری در سیستم وجود دارد" ForeColor="Red"
OnServerValidate="cvUserName_ServerValidate">→</asp:CustomValidator>
و بعد در رویداد ServerValidate آن نام کاربری را بررسی کنید :



if (نام کاربری قبلاً ثبت شده است)
{
args.IsValid=false;
}
else args.IsValid=true;


و یادتون باشه که در دکمه ثبت اطلاعات قبل از هرچیز یک if بگذارید که در صورت تایید کد را اجرا کند:



if (Page.IsValid)
{
// Write Your Submit Code Here
}

shahlaj
سه شنبه 27 خرداد 1393, 15:56 عصر
و بعد در رویداد ServerValidate آن نام کاربری را بررسی کنید :



if (نام کاربری قبلاً ثبت شده است)
{
args.IsValid=false;
}
else args.IsValid=true;


دقیقا باید توی شرط if چی باید نوشت؟چطور باید نام کاربری که قبلا ثبت نام کرده بنویسم؟
لطفا کمکم کنید خیلی عجله دارم.

alireza_s_84
سه شنبه 27 خرداد 1393, 19:55 عصر
و بعد در رویداد ServerValidate آن نام کاربری را بررسی کنید :



if (نام کاربری قبلاً ثبت شده است)
{
args.IsValid=false;
}
else args.IsValid=true;


دقیقا باید توی شرط if چی باید نوشت؟چطور باید نام کاربری که قبلا ثبت نام کرده بنویسم؟
لطفا کمکم کنید خیلی عجله دارم.

http://barnamenevis.org/showthread.php?182386

mansoure_p
یک شنبه 11 مرداد 1394, 11:38 صبح
و بعد در رویداد ServerValidate آن نام کاربری را بررسی کنید :



if (نام کاربری قبلاً ثبت شده است)
{
args.IsValid=false;
}
else args.IsValid=true;


دقیقا باید توی شرط if چی باید نوشت؟چطور باید نام کاربری که قبلا ثبت نام کرده بنویسم؟
لطفا کمکم کنید خیلی عجله دارم.

133839

133840