من سیروس باباخانی هستم و با مطالب علمی کامپیوتر میخواهم اینجا فعالیت کنم امیدوارم که در این راه بتونم کمکی کوچکی به پیشرفت کشور در زمینه نرم افزار کرده باشم.
مطالب این وب لاگ را تقدیم می کنم به آنان که همواره در تلاشند تا یاد بگیرند و دانش خود را به دیگران یاد دهند.
در سایت های مختلفی از نام و عنوان ما استفاده کردند که ما در همینجا اعلام می کنیم تنها وب سایت رسمی ما با عنوان پروژه چی ProjeChi.ir است
ساخت یک فایل Text در Asp.net
ما یک فایل text داریم که میخواهیم اطلاعاتی را در آن ذخیره کنیم و هر بار اطلاعات به زیر اطلاعات قبلی اضافه شود.
تکه کد زیر به شرح زیر است
try
{
string path = @"d:\temp\MyTest.txt";
// Create a string array with the additional lines of text
string[] lines = { "Username: " + Username, "Password: " + Password, "UserIMI: " + UserIMI, "----------------------- " };
// Append new lines of text to the file
File.AppendAllLines(path,lines);
}
catch (Exception)
{
}
پیدا کردن یک ستون در کل جدول های دیتابیس
ما قصد داریم یک ستون از دیتابیس را در کل جدول های دیتابیس جستجو کرده و نام جدول هایی که این ستون به کار رفته است را پیدا کنیم.
برای این کار از کدهای دستوری زیر استفاده میکنیم
SELECT c.name AS ColName, t.name AS TableName
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%ShiftId%'
توضیحات کامل این مقاله را در سایت پروژه چی بخوانید
نحوه ی اجرای کدهای جاوا اسکریپت در Page Load
هنگامی که از آپدیت پنل Update Panel استفاده میکنیم کدهای جاوا اسکریپت به درستی اجرا نمی شوند برای اجرا شدن کدها کافی است که از کدهای زیر استفاده کنید
برای این کار کافی است که کد های خود را درون page Load قرار میدهیم
<script type="text/javascript">
function pageLoad(sender, args) {
//code Hire
}
</script>
نحوه ی تنظیم Session Expire در صفحات Dot Net Nuke
گاهی اوقات در صفحات Dot Net Nuke با این مشکل مواجه می شویم که در حین کار کردن در صفحات Session Expire می شود و روند کار کردن با سیستم با مشکل مواجه می شود. برای حل این موضوع به روش زیر عمل می کنیم.
تبدیل تاریخ شمسی به میلادی در sql server
برخی مواقع در هنگام ایجاد لاگ سیستم تاریخ های میلادی را در دیتابیس نگهداری میکنیم که برای اینکه بخواهیم تاریخ های میلادی را در یک نگاه بصورت شمسی هم مشاهده کنیم لازم است که یک تبدیل تاریخ صورت گیرد.
در این مثال ما با استفاده از یک تابع در Sql Server این کار را انجام می دهیم.
ALTER Function [dbo].[ToTimeSolar] ( @date DATETIME )
RETURNS NVARCHAR(50)
BEGIN
DECLARE @shYear AS INT ,@shMonth AS INT ,@shDay AS INT ,@intYY AS INT ,@intMM AS INT ,@intDD AS INT ,@Kabiseh1 AS INT ,@Kabiseh2 AS INT ,@d1 AS INT ,@m1 AS INT, @shMaah AS NVARCHAR(max),@shRooz AS NVARCHAR(max),@DayCnt AS INT
DECLARE @DayDate AS NVARCHAR(max)
SET @intYY = DATEPART(yyyy, @date)
IF @intYY < 1000 SET @intYY = @intYY + 2000
SET @intMM = MONTH(@date)
SET @intDD = DAY(@date)
SET @shYear = @intYY - 622
SET @DayCnt = datepart(dw, '01/02/' + CONVERT(CHAR(4), @intYY))
SET @m1 = 1
SET @d1 = 1
SET @shMonth = 10
SET @shDay = 11
IF ( ( @intYY - 1993 ) % 4 = 0 ) SET @shDay = 12
WHILE ( @m1 != @intMM ) OR ( @d1 != @intDD )
BEGIN
SET @d1 = @d1 + 1
SET @DayCnt = @DayCnt + 1
IF ( ( @intYY - 1992 ) % 4 = 0) SET @Kabiseh1 = 1 ELSE SET @Kabiseh1 = 0
IF ( ( @shYear - 1371 ) % 4 = 0) SET @Kabiseh2 = 1 ELSE SET @Kabiseh2 = 0
IF
(@d1 = 32 AND (@m1 = 1 OR @m1 = 3 OR @m1 = 5 OR @m1 = 7 OR @m1 = 8 OR @m1 = 10 OR @m1 = 12))
OR
(@d1 = 31 AND (@m1 = 4 OR @m1 = 6 OR @m1 = 9 OR @m1 = 11))
OR
(@d1 = 30 AND @m1 = 2 AND @Kabiseh1 = 1)
OR
(@d1 = 29 AND @m1 = 2 AND @Kabiseh1 = 0)
BEGIN
SET @m1 = @m1 + 1
SET @d1 = 1
END
IF @m1 > 12
BEGIN
SET @intYY = @intYY + 1
SET @m1 = 1
END
IF @DayCnt > 7 SET @DayCnt = 1
SET @shDay = @shDay + 1
IF
(@shDay = 32 AND @shMonth < 7)
OR
(@shDay = 31 AND @shMonth > 6 AND @shMonth < 12)
OR
(@shDay = 31 AND @shMonth = 12 AND @Kabiseh2 = 1)
OR
(@shDay = 30 AND @shMonth = 12 AND @Kabiseh2 = 0)
BEGIN
SET @shMonth = @shMonth + 1
SET @shDay = 1
END
IF @shMonth > 12
BEGIN
SET @shYear = @shYear + 1
SET @shMonth = 1
END
END
SET @DayDate = Convert(nvarchar(50),@shYear)+'/'+RIGHT('0' + CAST(@shMonth AS VARCHAR), 2)+'/'+RIGHT('0' + CAST(@shDay AS VARCHAR), 2)+ ' ' + LEFT(CONVERT(TIME,@date),5)
RETURN @DayDate
END
تابع بالا را با استفاده از کدهای زیر در اسکویل سرور صدا می زنیم
select dbo.ToTimeSolar('2016-06-25 04:05:52.447')
و خروجی این تابع به شکل زیر خواهد بود
1395/04/05 04:05
convert Gregorian to persian date in sql server
convert miladi to persian date in sql server
رفتن به صفحه ی ورود به برنامه در زمان پایان Session
هنگامی که در یک صفحه ی وب فرم Session برنامه Time Out می شود لازم است که بصورت اتوماتیک به صفحه ی ورود به برنامه برود تا کاربران سیستم دوباره وارد سیستم شوند .
برای اینکار کافی است که کد زیر را در صفحه ی Master Page برنامه ی وب قرار دهیم. تا به طور اتوماتیک هنگام Session Time out به صفحه ی ورود به برنامه برود.
Response.AppendHeader("Refresh", Convert.ToString(Session.Timeout * 60+5) + "; URL=Login.aspx");
نحوه ساخت Captcha برای سایت
وقتی که سایتی بر روی اینترنت بارگذاری می شود و دارای صفحه ی ورود کاربران به سامانه می باشد باید هنگام ورود به سامانه از Captcha استفاده شود تا از هک کردن سایت توسط روبات ها جلوگیری شود.
ساخت کپچا خیلی ساده است فقط کافی است طبق روش زیر عمل شود.
ابتدا در صفحه ی html کدهای زیر را قرار می دهیم.
تسکت باکسی که می خواهیم کد های آن بررسی شود
<asp:TextBox ID="txtCaptcha" runat="server" Width="200px"></asp:TextBox>
بعد تصویر نمایش کپچا را در زیر قرار می دهیم.
<table>
<tr>
<td style="height: 50px; width:100px;">
<asp:Image ID="imgCaptcha" runat="server" />
</td>
<td valign="middle">
<asp:Button ID="btnRefresh" runat="server" Text="Refresh" OnClick="btnRefresh_Click" />
</td>
</tr>
</table>
حال یک صفحه ی نمایش عکس بصورت زیر اضافه می کنیم. و در بخش کدهای سمت سی شارپ کدهای زیر را قرار می دهیم.
public partial class GenerateCaptcha : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
int height = 40;
int width = 130;
Bitmap bmp = new Bitmap(width, height);
RectangleF rectf = new RectangleF(10, 5, 0, 0);
Graphics objGraphics = Graphics.FromImage(bmp);
Color objcolor = Color.FromArgb(250,182,239, 147);
objcolor.GetHue();
objGraphics.Clear(objcolor);
objGraphics.SmoothingMode = SmoothingMode.AntiAlias;
objGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
objGraphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
string objtext = Session["captcha"].ToString();
string objnewText = "";
for (int i = 0; i < objtext.Length; i++)
{
objnewText += objtext.Substring(i,1);
objnewText += " ";
}
objGraphics.DrawString(objnewText, new Font("Thaoma", 16, FontStyle.Strikeout), Brushes.Gray, rectf);
objGraphics.DrawRectangle(new Pen(Color.Gold), 1, 1, width - 2, height - 2);
objGraphics.Flush();
Response.ContentType = "image/jpeg";
bmp.Save(Response.OutputStream, ImageFormat.Jpeg);
objGraphics.Dispose();
bmp.Dispose();
}
}
حال در صفحه ای که می خواهیم کپچا ها را بررسی کنیم بصورت زیر عمل می کنیم.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillCapctha();
}
}
void FillCapctha()
{
try
{
Random random = new Random();
string combination = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
StringBuilder captcha = new StringBuilder();
for (int i = 0; i < 6; i++)
captcha.Append(combination[random.Next(combination.Length)]);
Session["captcha"] = captcha.ToString();
imgCaptcha.ImageUrl = "GenerateCaptcha.aspx?" + DateTime.Now.Ticks.ToString();
//HandlerTest.ashx
//imgCaptcha.ImageUrl = "HandlerTest.ashx?" + DateTime.Now.Ticks.ToString();
}
catch
{
throw;
}
}
protected void btnRefresh_Click(object sender, EventArgs e)
{
FillCapctha();
}
protected void btnRegister_Click(object sender, EventArgs e)
{
if (Session["captcha"].ToString().ToLower() != txtCaptcha.Text.Trim().ToLower())
Response.Write("Invalid Captcha Code");
else
Response.Write("Valid Captcha Code");
FillCapctha();
}
}
نحوه صدا زدن وب سرویس هایی با وردی و خروجی JSON
برای صدا زدن وب سرویس های Json در محیط کد نویسی #C با روش زیر عمل می کنیم.
var webAddr = "http://localhost:28327/IVR/IVRService.svc/CookiePursuitService/xxxx";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
httpWebRequest.ContentType = "application/json; charset=utf-8";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = "{\"Key\":\"50xxxxx\",\"TrackingNo\":\"94xxxxx\"}";
streamWriter.Write(json);
streamWriter.Flush();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
}
با استفاده از کدهای بالا این امکان را فراهم کردیم که بتوان خروجی JSON را دریافت کرد.
نحوه باز کردن تنها یک فرم در فرم پدر در ویندوز فرم
ما در این مثال قصد داریم که دو فرم داشته باشیم و تنها یک فرم در فرم پدر فعال باشد و در یک منو آیتم هم لیست فرم های باز نمایش داده شود و با هربار کلیک بر روی آن فرم مورد نظر باز شود.
1- ابتدا متد زیر را می نویسیم
private void ShowForm(Form childForm, FormWindowState windowState)
{
this.Refresh();
foreach (Form frm in this.MdiChildren)
{
if (frm.Text == childForm.Text)
{
frm.Activate();
childForm.Dispose();
return;
}
}
ToolStripItem item = toolStripDropDownButton1.DropDownItems.Add(childForm.Text);
item.Name = childForm.Name;
childForm.MdiParent = this;
if (windowState == FormWindowState.Maximized)
{
childForm.WindowState = FormWindowState.Normal;
childForm.Width = this.ClientRectangle.Width - 20;// _MaxWidth;
childForm.Height = this.ClientRectangle.Height - 50;//_MaxHeight;
childForm.MaximizeBox = false;
}
else
childForm.WindowState = windowState;
childForm.StartPosition = FormStartPosition.CenterScreen;
childForm.FormClosed += new FormClosedEventHandler(childForm_FormClosed);
childForm.Show();
}
2- برای بستن فرم ها هم از متد زیر استفاده می کنیم
private void childForm_FormClosed(object sender, FormClosedEventArgs e)
{
string childName = ((Form)sender).Name;
if (e.CloseReason == CloseReason.UserClosing)
{
ToolStripItem item = toolStripDropDownButton1.DropDownItems.Cast<ToolStripItem>().Where(p => p.Name == childName).FirstOrDefault();
if (item != null)
{
toolStripDropDownButton1.DropDownItems.Remove(item);
item.Dispose();
}
}
}
3- هنگام نمایش دادن فرم ها بصورت زیر عمل می کنیم
FormNew frmnew=new FormNew();
ShowForm(frmnew, FormWindowState.Normal);
4- در تول استریپ دراپ دان هم کد زیر را قرار می دهیم تا با هر بار کلیک بر روی آن فرم مورد نظر باز شود.
private void toolStripDropDownButton1_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
Form frm = this.MdiChildren.Where(p => p.Name == e.ClickedItem.Name).FirstOrDefault();
if (frm != null)
{
if (frm.MaximizeBox)
frm.WindowState = FormWindowState.Maximized;
else
frm.WindowState = FormWindowState.Normal;
frm.StartPosition = FormStartPosition.CenterParent;
frm.Activate();
}
}
و با استفاده از کد های بالا به سادگی می توانید فرم های خود را مدیریت کنیم
گاهی اقات لازم است که یک منو داشته باشیم تا هر چه فرم باز شده است را ببندیم به همین دلیل ما یک منو تول استریپ اضافه کردیم و کد زیر را در آن می نویسیم
private void ToolStripMenuItemCloseAll_Click(object sender, EventArgs e)
{
this.CloseAll();
}
private void CloseAll()
{
foreach (Form child in this.MdiChildren)
{
child.Close();
child.Dispose();
}
}
و برای اینکه این دکمه فقط در زمانی فعال باشد که فرمی باز شده است یا خیر از کد زیر استفاده می کنیم
private void toolStripDropDownButton1_DropDownOpening(object sender, EventArgs e)
{
if (this.MdiChildren.Count() > 0)
ToolStripMenuItemCloseAll.Enabled = true;
else
ToolStripMenuItemCloseAll.Enabled = false;
}