# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ASP.NET Web Forms > آموزش: آموزش کد های کاربردی ASP.net

## Ali_M.Eghbaldar

سلام به همه دوستان  :لبخند: 
با اجازه از دوستان پیشکسوت , حرفه ای و سابقه دار در این تالار می خوام با ایجاد این تاپیک و 
با گذاشتن کد هایی که از سر تجربه حاصل شده و با همکاری دوستان کمک کوچکی به خانواده ASP.NET بکنم .

*هدف:*
رفع مشکل کدی دوستان ( تاکید می کنم فقط مشکل کدی) . مطرح نکردن مشکلاتی از قبیل راهنمایی , مشورت , .... خودداری کنید.

* روند کار:*
1:اگه نیاز به کدی دارید لطفا بضورت پیام خصوصی به من اطلاع بدبد که پست شلوغ نشه
2:سعی می کنم هر روز کدی جدید رو در این تاپیک قرار بدم

از مشارکت دوستان دیگر استقبال می کنیم  :چشمک: 
__________________________________________________  ______________________

* آموزش ها:*




> پست شماره 2:                            *چگونگی تغییر رنگ TextBox هنگام رخ دادن Validation* 
> پست شماره 3:  *افکت گذاری روی UpdatePanel                                      
> *پست شماره 4:     *ذخیره هر نوع فایل در بانک اطلاعاتی*
> پست شماره 5:     *اسکریپت محاسبه نظرات کاربران در سایت*
> پست شماره 6:     *گرفتن محتویات Input Text از طریق* *Behind Code
> *پست شماره 7*:    * *نمایش محتویات ستونی از GridView که مخفی شده است (**(**invisbile
> *پست شماره 8*:**     استفاده از تاریخ یه فرمت های مختلف* 
> پست شماره 9:*   گرفتن اطلاعات از Gridview,Datalist ,.. بعد از کلیک
> *پست شماره 10:*کارکردن با کنترل ValidatorCallout 
> ...

----------


## Ali_M.Eghbaldar

*چگونگی تغییر رنگ TextBox هنگام رخ دادن Validation* 
__________________________________________________  _______________________

با سلام

برای انجام این کار نمی توان از کنترل ReqireFieldValidation استفاده کرد
اضافه کردن کد های زیر در Editor Html :
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage=""
    ControlToValidate="TextBox1" ClientValidationFunction="ValidateTextBox"
    OnServerValidate="CustomValidator1_ServerValidate"
    ValidateEmptyText="True"></asp:CustomValidator>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<script src="jquery-1.2.6.js" type="text/javascript"></script>
<script type="text/javascript">
    function ValidateTextBox(source, args)
    {
        var is_valid = $("#TextBox1").val() != "";
        $("#TextBox1").css("background-color", is_valid ? "white" : "red");
        args.IsValid = is_valid;
    }
</script>
اضافه کردن Behind COde :
    Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate

        Dim is_valid As Boolean = TextBox1.Text <> ""
        TextBox1.BackColor = If(is_valid, Color.White, Color.Red)
        args.IsValid = is_valid

    End Sub____
منبع

فایل برنامه هم قرار دادم
موفق باشید  :چشمک:

----------


## Ali_M.Eghbaldar

*افکت گذاری روی UpdatePanel*
__________________________________________________  _______

سلام
می خوام روشی یاد بدم که موقع انجام کار در UpdatePanel کاربر تغییر فوری UpdatePanel را احساس نکنه

این کار توسط UpdatePanelAnimation از ابزار های AjaxTooltik انجام میشه
می تونید از اینجا دانلود کنید 

1: اضافه کردن UpdatePanelAnimation ,UpdatePanel , Scriptmanager 
2: اضافه کردن Button و Label به UpdatePanel
3: ست کردن خاصیت 
TargetControlID="updatepanel1"(با این کار خود به خود UpdatePanelAnimation ناپدید می شود)
4:اضافه کردن کد های زیر به UpdatePanelAnimation
<Animations>
            <OnUpdating>
                <Color duration="1" startvalue="#ffffff" endvalue="#999999" property="style" propertykey="backgroundColor"
                />
            </OnUpdating>
            <OnUpdated>
                <Color duration="1" startvalue="#999999" endvalue="#ffffff" property="style" propertykey="backgroundColor"
                />
            </OnUpdated>
        </Animations>اضافه کردن کد زیر در button :
Label1.Text="OK?"نکته : به علت زیاد بودن حجم DLL مذبور : AjaxTooltikControl خودتان بعد از دانلود آن را در پوشه Bin قرار دهید

----------


## Ali_M.Eghbaldar

*ذخیره هر نوع فایل در بانک اطلاعاتی*
__________________________________________________  ______________

با سلام  :لبخند: 
چند وقتی بود تاپیکی با عنوان ذخبره و بازیابی فایل در خود بنکم اطلاعاتی می دیدیم
تصمیم گرفتم در این تاپیک در این مورد صحبت کنم

*معایب این کار:*
1: اشغال شدن حجم بانک
2:پیمایش سخت 
3:کد نویسی سخت و پیچیده

*مزایا این کار:*
1:امنیت
2: Clean بودن فضا

نکته: حتما روش های دیگری غیر از روش حاضر وجود خواهد داشت

نکته:بانک این مثال SQL Server 2000 می باشد

نکته: در این روش از ContentType های فایل استفاده می شود.فرضا ContetnType های تصویر بصورت زیر است:
 
<% Response.ContentType = "image/GIF" %> 
<% Response.ContentType = "image/JPEG" %> 
<% Response.ContentType = "image/JPEG" %> 

مثلا برای PDF ها :
<% Response.ContentType = "Application/pdf" %> 


من در این مثلا فرض کردم تمام فایل آپلود شده از نوع تصویر هستند شما بر حسب نیاز خودتون می توند ConentType تغییر بدید
نکته: برای انعطاف بیشتر می تونید فلیدی داشته باشد و نوع فایل توش قرار بدید و موقع خوندن اونو بررسی کنید و بر حسب اون فایل فراخوانی کنید  :چشمک: 

اسکریپت جدول:

CREATE TABLE [dbo].[tFile] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [File] [image] NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO


برای درج داریم:
        If FileUpload1.HasFile Then
            Using myConnection As New SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=True")
                Const SQL As String = "insert into tFile([file]) values (@file)"
                Dim myCommand As New SqlCommand(SQL, myConnection)
                Dim imageBytes(FileUpload1.PostedFile.InputStream.Leng  th) As Byte
                FileUpload1.PostedFile.InputStream.Read(imageBytes  , 0, imageBytes.Length)
                myCommand.Parameters.AddWithValue("@file", imageBytes)
                myConnection.Open()
                myCommand.ExecuteNonQuery()
                myConnection.Close()
            End Using


برای فراخوانی داریم:
        Using myConnection As New SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=True")

            Const SQL As String = "SELECT [file] FROM [tfile] WHERE [id] = 4"
            Dim myCommand As New SqlCommand(SQL, myConnection)
            myConnection.Open()
            Dim myReader As SqlDataReader = myCommand.ExecuteReader
            If myReader.Read Then
                Response.ContentType = "image/jpg"
                Response.BinaryWrite(myReader("file"))
            End If

            myReader.Close()
            myConnection.Close()
        End Using

فایل پروژه ضمیمه شده است

----------


## Ali_M.Eghbaldar

*اسکریپت محاسبه نظرات کاربران در سایت*
__________________________________________________  _________________________

سلام به همه
با اینکه استقبال خاصی نمیشه ولی همچنان ادامه می دهیم  :لبخند: 
حتما دوستان این مطالب بلدم - انشاالله  :افسرده: 

خوب امروز می خوام در مورد محاسبه درصد ( حالا تو این مثال خاص Rating مطرح شده و منظور روند کاره) صحبت کنم و براتون یک StoreProcedure ساده و کاربردی از محاسبه درصد نظر خواهی افراد بزارم

فرمولش که دیگه همه  می دومنن  :لبخند گشاده!: 

(هر مقدار مشخص / تعداد کل ) × 100اسکریپ ساخت جدول:

CREATE TABLE [dbo].[Tbl_GoodsRating] (
     [ID] [bigint] IDENTITY (1, 1) NOT NULL ,
     [Rate] [int] NULL 
 ) ON [PRIMARY]
 GO

نکته: در این مثال فرض بر این است که فقط یک کالا داریم و فقط در مورد آن نظر خواهی می کنیم
شما می توانید آنرا گسترش دهید

*اسکریپت اصلی:*
declare @Count_Rate bigint
declare @R1 bigint; declare @R2 bigint ; declare @R3 bigint ; declare @R4 bigint ; declare @R5 bigint
SET @Count_rate = (select count(*) from tbl_goodsrating where id_goods=2)
SET @R1 =       (select count(*) from tbl_goodsrating and [RATE]=1)
SET @R2 =       (select count(*) from tbl_goodsrating and [RATE]=2)
SET @R3 =       (select count(*) from tbl_goodsrating and [RATE]=3)
SET @R4 =      (select count(*) from tbl_goodsrating and [RATE]=4)
SET @R5 =       (select count(*) from tbl_goodsrating and [RATE]=5)
select 
Left(cast(round((@R1*1.0/@Count_Rate)*100,1) as varchar),4) as 'Rate1',
Left(cast(round((@R2*1.0/@Count_Rate)*100,1) as varchar),4) as 'Rate2',
Left(cast(round((@R3*1.0/@Count_Rate)*100,1) as varchar),4) as 'Rate3',
Left(cast(round((@R4*1.0/@Count_Rate)*100,1) as varchar),4) as 'Rate4',
Left(cast(round((@R5*1.0/@Count_Rate)*100,1) as varchar),4) as 'Rate5'

----------


## Ali_M.Eghbaldar

*گرفتن محتویات Input Text از طریق Behind Code*

به در خواست کاربر: mahdyeh
__________________________________________________  _______________

با سلام
در این پست می خوام محتویات کنترل HTML Input Text از طریق کدنویسی بدست بیارم:

HTML CODE:

<input id="Text1" type="text" name='Text1'/>

BEHIND CODE:
Response.Write(Request.Form["Text1"]);

----------


## Ali_M.Eghbaldar

*نمایش محتویات ستونی از GridView که مخفی شده است (invisbile)
__________________________________________________  ________
*
سلام
فرض کنیم شما یکی از ستون های Gridview مخفی کردید حالا می خوان اون Cell نشون بدبد
چون مخفیه نمی تونید از دستور زیر استفاده کنید

lbl.text=DG.row(index).cells(2).text
نکته: فرض میکنیم ستون شماره 2 مخفی شده است

1.ابتدا اون ستون را به TemplateControl تبدیل می کنید

                        <asp:TemplateField HeaderText="news" SortExpression="news" Visible="False">
                            <ItemTemplate>
                                <asp:Label ID="lblnews" runat="server" Text='<%# Bind("news") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>

2:سپس با کد زیر اونو می خونیم  :لبخند گشاده!: :
lblShow.Text = CType(DG.Rows(e.NewSelectedIndex).FindControl("lbl  news"), Label).Text

----------


## Ali_M.Eghbaldar

*استفاده از تاریخ به فرمت های مختلف
__________________________________________________  _____________
*
با سلام
می دونم ممکنه موضوع تکراری انتخاب کرده باشم ولی امیدوارم به درده کسی بخوره .
فرمت های که این کلاس خروجی میده بصورت زیره:
__
من کلا قصد دارم کد های جدید و نا شناخته بزارم  :لبخند گشاده!:  ولی اگه دوستان بخوان منم از این نمونه ها ناچارم بزارم براساس قانون پستم  :گیج:  دیگه شرمنه خیلی خیلی تکراریه  :افسرده:  :خجالت:  :خجالت: 



```
دو شنبه  26  مرداد  1388
```

با کد:
'TextBox1.Text = ShamsiDate.Miladi2Shamsi(Now, ShamsiDate.ShowType.LongDate)

```
1388/5/26
```

با کد:
TextBox1.Text = ShamsiDate.Miladi2Shamsi(Now, ShamsiDate.ShowType.ShortDate)


```
'جمعه
```

و
'فروردین

::::::: در ادامه دوستم imanasp درخواستی داشتن منوط به اینکه چیکار کنم اعداد فارسی بشه؟
2 تا راه داره اول اینکه اعداد فارسی در بانک بریزیم و راه دوم اینکه اعداد لاتین در بانک بریزیم ولی موقع خوندن فارسیش کنیم که من راه دوم پیشنهاد می کنم !! به دلایلــــی
برای این کار بعد از خواندن عدد تاریخ باید با استفاده از متد زیر اونو به فارسی تبدیل  کنید

private string ConvertNumLa2Fa(string num)
        {
            string result = string.Empty;
            foreach (char c in num.ToCharArray())
            {
                switch (c)
                { 
                    case '0' :
                        result += "٠";
                        break;
                    case '1':
                        result += "١";
                        break;
                    case '2':
                        result += "٢";
                        break;
                    case '3':
                        result += "٣";
                        break;
                    case '4':
                        result += "٤";
                        break;
                    case '5':
                        result += "٥";
                        break;
                    case '6':
                        result += "٦";
                        break;
                    case '7':
                        result += "٧";
                        break;
                    case '8':
                        result += "٨";
                        break;
                    case '9':
                        result += "٩";
                        break;
                    default:
                        result += c;
                        break;

                }
            }
            return result;
        }

----------


## Ali_M.Eghbaldar

*گرفتن اطلاعات از Gridview,Datalist ,.. بعد از کلیک
__________________________________________________  ______________
*با سلام
این بحث در انواع تاپیکا مطرح شد ولی من می خوام با یک مثال اونو کامل توضیح بدم
امیدوارم بدرتون بخوره*
*
*نکته* : این روش تمام کنترل های سربرگ DATA را شامل می شود ولی من یا GridView تست می کنم

1:ایجاد Gridview
2:وصل کردن به بانک ( هر روشی شد فقط اگه از ابتدا با SqlDataSource برید جلو بهتره )
3:اضافه کردن یک کنترل به Gridview حالا مثلا ImageButtom
4:تبدیل ImageButton به Template 


            <asp:TemplateField>
                            <ItemTemplate>
                                <asp:ImageButton ID="Image_Edit" runat="server" CausesValidation="False" 
                            *    CommandArgument='<% #Eval("ID","{0}") %>'* 
                imageUrl="~/Content/Images/edit.gif" 
                              *  OnCommand="Edit_Goods"* />
                            </ItemTemplate>                            
                            <HeaderStyle HorizontalAlign="Right" />
                            <ItemStyle HorizontalAlign="Left" />
                        </asp:TemplateField>
*نکات:*
برای اینکه بتوانیم اطلاعات هر رکورد را بدست بایوریم نیاز به Field کلیدی داریم که در اینجا ID این کار را برای ما انجام می دهد
*تعاریف:*
CommandArgument : پاس دهنده ی فیلد کلیدی ID هر رکورد بعد از کلیک 
OnCommand : پروسجری که در Behind Code نوشه می شود

4:نوشتن کد در Behind Code:

    Public Sub Edit_Goods(ByVal sender As Object, ByVal e As CommandEventArgs)
       response.write(e.CommandArgument))
    End Sub
شما با بررسی ID میتونید تغییرات لازم بدی

----------


## Ali_M.Eghbaldar

*کارکردن با کنترل ValidatorCallout  
(از سری کنترل های Tooltik  برای validation  در* *Updatepanel**
**(**
*به در خواست دوستم samira3

خداشاهده اصلا وقت نیست شرمنده دیر شد  :خجالت: 
 __________________________________________________  ______________________________

سلام
ما از کنترل RequireFieldValidator داخل UpdatePanel نمی تونیم استفاده کنیم راهش عملیات زیره:  :لبخند گشاده!: 

0:اضافه کردن ScriptManager
1:اضافه کردن UpdatePanel 
2:اضاقه کردن TextBox  (داخل UpdatePanel)
3:اضافه کردن کنترل RequireFieldValidator (داخل UpdatePanel)
4:اضافه کردن ValidatorCallout (داخل UpdatePanel)

روند کار:
TExtbox ما طبق معمول به  کنترل RequireFieldValidator  وصل می شود :
ControlToValidate="TextBox1"

کنترل RequireFieldValidator   به ValidatorCallout  وصل می شود:

TargetControlID="RequiredFieldValidator1"

نکته:کنترل ValidatorCallout ناپدید میشه

ست کردن خاصیت Animation کنترل ValidatorCallout:
        <OnShow>                                    
        <Sequence>   
        <HideAction Visible="true" /> 
        <FadeIn Duration="1" MinimumOpacity="0" MaximumOpacity="1" />
        </Sequence>
        </OnShow>
        <OnHide>
        <Sequence>    
        <FadeOut Duration="1" MinimumOpacity="0" MaximumOpacity="1" />
        <HideAction Visible="false" />
        </Sequence>
        </OnHide>

----------


## Ali_M.Eghbaldar

از دوستان خواهش کردم که لطفا پست خراب نکنند !!  :افسرده: 
__________________________________________________  ___________________
*پیدا کردن کنترل در DetailsView ,Gridview, Datalist* و ....
__________________________________________________  ___________________

با سلام

طرز کار» 

1:Bind کردن هر کدام از کترل های بالا به بانک

2:هر کدام از فیلد هایی را که میخواهید مقدار آن را بدست بیاورید را باید Convert this field into a TemplateField کنید و برای آن اسمی را قرار دهید ( در ID )

مانند کد زیر:
 <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
            DataKeyNames="ID" DataSourceID="SqlDataSource1" Height="50px" Width="125px">
            <Fields>
            
                <asp:TemplateField HeaderText="ID" InsertVisible="False" SortExpression="ID">
                    <EditItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblID" runat="server" Text='<%# Bind("ID") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                
                <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
                <asp:BoundField DataField="Detail_lid" HeaderText="Detail_lid" 
                    SortExpression="Detail_lid" />
               
            </Fields>
        </asp:DetailsView>

حالل با استفاده از کد زیر می توانیم مقدار lblID که Template کردیم را بدست آوریم :
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Response.Write(*CType(DetailsView1.FindControl("lblID"), Label).Text*)
    End Sub

----------


## Ali_M.Eghbaldar

*Gradient BGColor بدون استفاده از عکس

* دوست خوبم raika17meta عنوان پستشو گذاشته بود (*بک** گراند دورنگ*)  :لبخند گشاده!:  نمی دونم عنوان درستی یا نه در هز صورت امید وارم بدرتتون بخوره ...

__________________________________________________  __________________________________________

این کدی که براتون گذاشتم داخل صفحه باعث میشه رنگ از یک رنگی مثل مشکی شروع بشه و کم کم به سفید برسه که بهش می گن : *Gradient
البته این کارو با یک عکس باریکم میشه انجام داد و خوب شرایط خاص خودشو می طلبه

*<style type="text/css">
body { 
    background-color:#FFFFFF; 
    filter:progid:DXImageTransform.Microsoft.Gradient(  GradientType=0,StartColorStr='#363636',EndColorStr  ='#FFFFFF');
    margin: 0px auto;
}
</style>*
*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

*ویرایش:*

1: دوست من blackcats اول ا تشکر می کنم بابته پستت ولی خواهش کردم که اگه نکته ای , یا آورری , ایرادی , در خواستی و ... وجود داره و مایل به مطرح کردنش هستید با پیام بهم اطلاع بدبد ممنون میشم  :اشتباه: 

2:دوست دیگه من جناب آقای ali_shmki در تاپیک 
https://barnamenevis.org/showth...95#post1083495
و در شماره پست 12 
باید دقت کنند که* کار نشد نداره* مطمئنا اگه من ناقص بلد بودم یا بلد نبودم این پست ایجاد نمی کردم

کد *Gradient در تمام مرورگر ها قابل اجراست
*و بر خلاف گفته ی این دوستم*
*


> البته از css3 هم ميتونيد استفاده كنيد كه فعلا cross-browser نيست و همه مرورگر ها ساپورت نميكنند.


اما به درخواست دوستان من پستمو کامل می کنم :  :لبخند: 

*برای مرورگر IE داریم:*

Filter:           progid:DXImageTransform.Microsoft.gradient (GradientType=1,           startColorstr=C#‎‎‎0ff3300, endColorstr=#ff000000); COLOR: green; HEIGHT:           120px*برای مرورگر FireFox ورژن بالای 3.6 داریم:*


background: -moz-linear-gradient(left, #efefef, #FFF);
*برای مرورگر Chrome وSafari داریم :*

background: -webkit-gradient(linear, left top, left bottom, from(#EFEFEF), to(#FFF));فکر نکنم دیگه مرورگره حرفه ای دیگه هم وجود داشته باشه !!  :لبخند گشاده!:  تا همین جا کافیه !! یا علی

----------


## Ali_M.Eghbaldar

*TreeView با استفاده از XML*
__________________________________________________  _____________________________

سلام به همه برنامه نویسان عزیز  :لبخند گشاده!: 

امروز براتون* آموزش تصویری* از راه اندازی TreeView با XML درست کردم و براتون می زارم
امیدوارم ازش استفاده کنید
در آموزش های بعدی سعی می کنم طرقیه وصل شدن TreeView و خواندن از بانک اطلاعاتی براتون بزارم البته استقبال خوب و دوستان نیاز داشتن !!

Source برنامه هم ضمینه کردم.


لینک دانلود فیلم:

----------


## Ali_M.Eghbaldar

*استفاده از CheckBox  در کنترل های Data
*_______________________________________________*
به در خواست nasim 

*سلام
امیدوارم بکارتون بیاد.

اسکریپت جدول:

CREATE TABLE [dbo].[t] (
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [name] [varchar] (50) COLLATE Albanian_CI_AI NULL ,
    [shsh] [varchar] (50) COLLATE Albanian_CI_AI NULL ,
    [address] [varchar] (50) COLLATE Albanian_CI_AI NULL 
)

----------


## Ali_M.Eghbaldar

*فرستادن مقادیر از GridView  و همزمان از کنترل های دیگر
__________________________________________________  _________________* 
به درخواست دوستم sajjad1365

کار سخت پیچیده ای نیست تقریبا همون کاری که در پست شماره 9 انجام دادیم

گرفتن مقدار از Gridview
 <asp:TemplateField HeaderText="fdsf" SortExpression="code">
                <ItemTemplate>
                    <asp:LinkButton 
                    ID="LinkButton1" 
                    *OnCommand="Send"
                    CommandArgument='<%# Eval("name","{0}")%>'*
                    runat="server">Eghbalar</asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>

گرفتن مقدار و فرستادن آن به جایی دیگر:
    Sub *Send*(ByVal sender As Object, ByVal e As CommandEventArgs)
        Response.Redirect("Default.aspx?Vlaue1=" + TextBox1.Text + "&Value2=" + e.CommandArgument)
    End Sub

----------


## Ali_M.Eghbaldar

*Download هر نوع فایل (دانلود واقعی)
(باز شدن Save Dialog)
__________________________________________________  _________________

*سلام به همه*

منظورم از دانلود واقعی چیه:
*
در بیشتر حالات ما برای آنکه فایلی را دانلود کنیم از دستور زیر استفاده می کنیم*

*Response.redirect("FilePath")
در واقع قصد پرش به آن فایل را داریم که برای بعضی از فایل ها Save Dialog باز می شود مثل فایل های Zip َشده و برا یبعضی از فایل ها هم Page را مستقیم باز می کندمثل فایل های عکسی.
که درستش حالتی است که برای هر نوع فایلی Save Dialog ّباز شود

خوب از دستور زیر استفاده کنیم:
if targetFile.exists Then

Response.Clear 
Response.AddHeader("Content-Disposition", "attachment; filename=" + targetFile.Name) 
Response.AddHeader("Content-Length", targetFile.Length.ToString) 
Response.ContentType = "application/octet-stream" 
Response.WriteFile(targetFile.FullName) 

End If             *
*

----------


## Ali_M.Eghbaldar

*تغییر Config کنترل FCKEditor
*__________________________________________________  _____________________________

با سلام

برای انجام تغییراتی بنیادی روی این کنترل مانند:
1: تغییر راست به چپ کردن
2:تغییر زبان پیش فرض
3:اضافه کردن Toolbar
4: کم و زیاد کردن Button ها 
و .....
باید فایل fckConfig.js را تغییر دهیم :

بعنوان مثال:
برای تغییر راست چین و چپ چین:
FCKConfig.ContentLangDirection    = 'rtl' ;
برای تغییر زبان پیش فرض:
FCKConfig.DefaultLanguage= 'fa' ;
برای اضافه کردن Toolbar:
FCKConfig.ToolbarSets["Short"] = [
    ['Cut','Copy','Paste'],
    ['Undo','Redo'],
    '/',
    ['Bold','Italic','Underline','StrikeThrough'],
    ['Link','Unlink','Anchor'],
    ['Image'],
    '/',
    ['FontName','FontSize'],
    ['TextColor','BGColor'],
] ;
برای کم و زیاد کردن Button های اجرایی:
FCKConfig.ToolbarSets["Default"] = [
    ['Source','-','Save'],
    ['Cut','Copy','Paste','Print'],

] ;

----------


## Ali_M.Eghbaldar

*غیر فعال کردن Item از GridView
در شرایطی خاص مثل حذف و ... 
__________________________________________________  __________________
*سوال دوستم karim orooji
با سلام
باید بگم سواله خیلی قشنگی بود - من که حال کردم
متن کامل سوال در پست زیر موجود است:
http://www.barnamenevis.org/sh...d.php?t=245473

ولی خلاصه ای از اون:



> میخوام رو اون کنترول داشته باشم که زمانی که تعداد سطرهای گرید به 1 رسید اون
> دکمه حذف بیاد خاموش بشه و اجازه پاک کردن فیلد رو نده


برای این کار باید روال  RowCreated استفاده بشه فقط یک نکته:

چون این روال از ابتدا شروع به ساخت سطر ها میکنه نمیشه شرطی مانند زیر
If gridview1.rows.count.....
را براش اجرا کرد
بلکه شرط قبلا باید تایید شده باشه که دیگه اون با صلیقه شما ....
من از مقدار بولی استفاده کردم.
    Dim b As Boolean = True

    Protected Sub DG_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles DG.RowCreated

        If b Then
            If e.Row.RowType = DataControlRowType.DataRow Then
                e.Row.Cells(3).Enabled = False
            End If
        End If
    End Sub

----------


## Ali_M.Eghbaldar

*استفاده از UrlRewriting
دستکاری و بازنویسی URL
*__________________________________________________  ____________________________*
*
سلام به همه ی دوستان 

کار با این متد در ASP.NET کاره سخته !!

در کنار UrlRewriting متد UrlMapping قرار داره که کاربردی مشابه داره !!

من براتون یه سری مثال با یه مقاله خوب گذاشتم  :لبخند: 
امیدوارم ازش استفاده کنید !!

و اگه کسی مثالی تهیه کرده برام بفرسته که با نام خودش تو این بخش بزارم 

برای دیدن مقاله *اینجا* کلیک کنید.

----------


## Ali_M.Eghbaldar

*استفاده هم زمان از تابع Confirm و RequiredFieldValidator 
__________________________________________________  ___________________*

سلام دوباره در یک روز  :لبخند گشاده!: 

به یک نکته ی جالبی بر خوردم که گفتم به شماهاهم بگم
از تابع Confirm و کنترل RequireFieldValidator هم زمان بصورت معمولی نمیشه استفاده کرد چون به محض فعال شدن Button تابع Confirm اجرا میشه و اجازه خودنمایی یه کنترل RequireFieldValidator نمیده 

راه حل: باید تابع Confirm را بصورت زیر تغییر بدید:

OnClientClick = "if (!confirm('پیغام شما')) return false;"

----------


## Ali_M.Eghbaldar

*اضافه کردن متن و عکس به Button
*__________________________________________________  ____________________________*
*
سلام
سوال دوستم niloo17

سوال:



> سلام دوستان 
> چه جوری می تونم به image button متن اضافه کنم .(نمی خوام متن را با عکس ذخیره کنم )
> ممنون از راهنماییتون


بهتره بجای ImageButton از خود Button بصورت زیر استفاده کنید:


<asp:Button ID="Button1" runat="server" Text="Button" 
style="background-image:url(images/btn.jpg)" />

----------


## Ali_M.Eghbaldar

*مخفی کردن Input Text
(به دو روش)
*__________________________________________________  ______________________________________________*
*به در خواست  mahdyeh*

*سلام به همه
این کارو هم با Javascript و با Code Behind براتون انجام دادم.

نوشتن کد های 1و2 الزامیه ...

کد یک:
 <script type="text/javascript">
        function eghbaldar()
        {
        document.getElementById('Text1').style.display="no  ne";
        }
    </script>
کد دو.:
<input id="Text1" type="text" />

خوب !! 
اگه مب خواهید این کار را با JS نشان دهید می تونید از کدهای زیر استفاده کنید:



<input id="Button4" type="button" value="button" onclick="return Button4_onclick()" />

        <script type="text/javascript">
           
function Button4_onclick() {
 eghbaldar();
}

ولی اگر می خواهید از code behind استفاده کنید از کد زیر:
ClientScript.RegisterStartupScript(GetType(Page), "Egh", "eghbaldar();", True)

----------


## Ali_M.Eghbaldar

*مشکل قبل از Restore
*__________________________________________________  __________________________________________*
*
سلام به همه ی دوستان عزیز
قبل از هرچیزی بگم این مطلبی که قصد دارم Share کنم حدود چهار روز وقتمو گرفت تا بتونم بهترین روش برای اینک کار پیدا کنم 

عملیان Backup و Restore به روش های زیادی از جمله SMO,DMO,Transcat و ... انجام می شه برای عملیات Backup مشکلی رخ نمیده اگه بدرستی انجام بشه و برای Restore اگه بانک در حال استفاده باشه خطای زیر رخ میده :

[Microsoft][ODBC SQL Server Driver][SQL Server]Exclusive access could not be obtained because the database is in use. [Microsoft][ODBC SQL Server Driver][SQL Server]RESTORE DATABASE is terminating abnormally.

البته مشکلمو در پست:
http://www.barnamenevis.org/sh...d.php?t=248042

مطرح کردم که حل نشد و ا زاونجا که *جوینده یابندست* توانستم   :لبخند: 
شما باید قبل از Restore کردن دیتابیستونو OFFLINE کنید بصورت زیر :

USE master
ALTER DATABASE [<db name here>] SET OFFLINE WITH ROLLBACK IMMEDIATE

----------


## Ali_M.Eghbaldar

*Bind کردن کنترل هایی مثل GridView و DropDownList با آرایه , لیست و ...
*__________________________________________________  ___________________________________________*
*
سلام به دوستان شاد  :لبخند گشاده!: 
خوب به سلامتی اول مهرم شد باید بربم مدرسه (دانشگاه  :لبخند گشاده!:  )

این پستو از مشکل دوستم majnun در لینک ایجاد کردم

http://www.barnamenevis.org/sh...d.php?t=248967

ابتدا برای استفاده از لیست از کلاس زیر استفاده می کنید:
Imports System.Collections.Generic

برای Bind کردن لیست با Gridview:

        Dim l As New List(Of String)
        l.Add("asdsad")
        l.Add("ASdsad")
        l.Add("#4#@$#@")
        GridView1.DataSource = l
        GridView1.DataBind()


*اما مشکلی که پیش میاد موقعی است که از Pagging  استفاده بشه . مانند مشکل دوستم:*



> من یه مشکلی دارم در pageing  گرید ویو 
> 
> من گرید ویو رو به وسیله ی یک لیست از کلاس بایند میکنم 
> 
> حالا وقتی میخوام وارد صفحه 2 بشم ارور میده 
> 
> ممنون میشم کمک کنید ..
> 
> متن ارور :
> ...


برای رفع این مشکل از کد زیر استفاده میکنیم :
    Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
        GridView1.PageIndex = e.NewPageIndex
        GridView1.DataBind()
    End Sub

خوب همون دستور بالا با استفاد ه از آرایه:
        Dim s(3) As String
        s(0) = "sadsad"
        s(1) = "sadsad23"
        s(2) = "sadsa213213d"
        s(3) = "sadsad24"
        GridView1.DataSource = s
        GridView1.DataBind()

برای کنترل Dropdownlist هم دقیقا از همین کدا استفاده میکنیم
بصورت زیر:

        Dropdownlist1.DataSource = s
        Dropdownlist1.DataBind()

----------


## Ali_M.Eghbaldar

*پر کردن Gridview با شرط
*با سلام 
با تاخیر خیلی زیاد دوباره پست گذاشتم !!  :لبخند گشاده!: 
سوال :



> من یک GridView دارم. یک فیلد دارم که با مقدار یک یا دو پر میشه . میخوام  اگر مقدارش یک بود توی اون رکورد image1 نمایش داده بشه و اگر هم دو بود  image2 نمایش داده بشه . و برای تمامی رکورده ها به همین شکل ، چکار کنم؟


راه حل استفاده از کد زیر:
<asp:Image ID="Image1" runat="server" 
ImageUrl='<%# IIF(Eval("flag")=0,"~/Presentation/images_Items/NoShow.gif","~/Presentation/images_Items/YesShow.gif") %>' />
* 
فایل های دانلود در آدرس زیر موجوده
https://barnamenevis.org/showthread.php?p=1140560&posted=1#post1140560

*

----------


## Ali_M.Eghbaldar

*TreeView با قابلیت داشتن RadioButton

*سلام خدمت دوستان , از آخرین پستی که گذاشتم ماهها میگزره  :لبخند گشاده!:  خدایی وقت نمیشه ولی سعی می کنم بیشتر براتون کد بزارم ...  :بامزه: *

ِکاربر* *Atrocios1 در پست :  

*https://barnamenevis.org/showthread.p...dioButton-List

همچین درخواستی داشته :




> سلام 
> ببخشید من می‌خوام ظاهر RadioButton List رو به شکل عکسی که ضمیمه کردم در بیارم...
> کسی راهی می‌دونه؟
> پیشاپیش ممنون از همه :)
> Untitled-2.jpg


برای حل این 2تا را وجود داره 1: استفاده از روال TreeNodeDataBound و ساخت از ابتدا و 2: کلک رشتی 
چون خودم رشتم دومییو می گم  :قهقهه: 

کد های HTML :
  <asp:TreeView ID="TreeView1" runat="server" ShowLines="True">
            <Nodes>
                <asp:TreeNode SelectAction="Expand" Text="مقدار یک"        Value="مقدار یک">
                    <asp:TreeNode ImageUrl="~/without.gif" Text="مقدار دو"          Value="مقدار دو"></asp:TreeNode>
                    <asp:TreeNode ImageUrl="~/without.gif" Text="مقدار سه"          Value="مقدار سه"></asp:TreeNode>
                    <asp:TreeNode ImageUrl="~/without.gif"  Text="مقدار چهار"        Value="مقدار چهار"></asp:TreeNode>
                    <asp:TreeNode ImageUrl="~/without.gif" Text="مقدار پنج"      Value="مقدار پنج"></asp:TreeNode>
                </asp:TreeNode>
              
            </Nodes>
        </asp:TreeView>


Code Behind:
    Protected Sub TreeView1_SelectedNodeChanged(ByVal sender As  Object, ByVal e As EventArgs) Handles TreeView1.SelectedNodeChanged

        Dim node As TreeNode = TreeView1.SelectedNode

        For i As Integer = 0 To node.Parent.ChildNodes.Count - 1
            node.Parent.ChildNodes(i).ImageUrl = "~/without.gif"
            node.Parent.ChildNodes(i).Checked = False
        Next
        node.ImageUrl = "~/with.gif"
        node.Checked = True

    End Sub

ّبراتون فایل را ضمینه کردم.موفق باشید  :قلب: 
TreeRadioButton.rar

----------


## Ali_M.Eghbaldar

*تغییر محتویات کنترل های Datalist قبل از نمایش

*با سلام خدمت دوستان 
در پست یازدهم در مورد دسترسی به اشیای داخل کنترل های داده گرا مثل DataList , GridVIew و ... بحث کردیم
در این پست می خواهم روشی یاد بگم که قبل از اینکه کنترل های داخل Datalist مقدار دهی بشن شما بتونید مقادیر دستکاری کنید.

روالی در کنترل های داده گرا وجود دارد به نام ItemDataBound موقعی  فراخوانی می شود که داده در حال قرار گرفتن در کنترل مذبور هستند پارامتری  از جنس DataListItemEvemtArgs اجازه کنترل روی داده ها را به ما می دهد با  دستورات زیر قصد تغییر محتویات یک کنترل Image را داربم :

    Protected Sub  DataList1_ItemDataBound(ByVal sender As Object, ByVal e As  System.Web.UI.WebControls.DataListItemEventArgs) Handles  DataList1.ItemDataBound

        Dim img As New Image
        img = CType(e.Item.FindControl("Image1"), Image)

        img.ImageUrl = "~\1.jpj"

    End Sub

----------


## Ali_M.Eghbaldar

*انداختن عکسی روی عکس دیگر
*سلام دوستان 
دوستانی که بخواهند عکسی را روی عکس دیگر باندازند دو راه پیش رو دارند:
1: استفاده از CSS
2:استفاده از کد نویسی بصورت زیر:

Bitmap bmp = new Bitmap(pathToImage1);

Bitmap bmp2 = new Bitmap(pathToImage2);

Graphics g = Graphics.FromImage(bmp1);

g.DrawImage(bmp2,x,y,...); 

g.Dispose();

bmp.Save(DestinationPath, ImageFormat.JPEG)

bmp2.Dispose();

bmp.Dispose();

*
*

----------


## taranomidigar

سلام عالی بود.خدا خیرتون بده

----------


## Ali_M.Eghbaldar

*رفع مشکل بهم ریختگی Menu در مرورگر chrome*

با سلام
متاسفانه مرورگر chrome با منوی asp.net مشکل داره و بهم ریخته اونو نشون میشده برای رفع این مشکل
کد زیر در Page_Load بنوسید:


if (Request.UserAgent.IndexOf("AppleWebKit") > 0)  
     Request.Browser.Adapters.Clear();

----------


## Ali_M.Eghbaldar

سلام به همه ( با یک وقفه بسیار طولانی  :لبخند:  )

خطای : 

**

*Login failed for user 'IIS APPPOOL\ASP.NET v4.0'*






برای حل این مشکل روند زیر را طی کنید:

باز کردن MS SQL SERVERراست کلیک روی فولدر loginsباز کردن منوی new loginوارد کردن عبارت *'       IIS APPPOOL\ASP.NET v4.0    * ' در فیلد nameوارد قسمت Server roles شوید و گزینه های مورد نظر را انتخاب کنیدOK

----------


## Ali_M.Eghbaldar

سلام به برنامه نویسان عزیز  :خجالت: 
براتون Function گذاشتم که میتونید با استفاده از اون ، thumbnail های مناسب خودتونو بسازید
سعی کرد کدهای اضافی حذف کنم که کار باهاش ساده تر باشه  :لبخند: 


    Sub Thum()

        If FileUpload1.HasFile Then

            Dim UlFileName, NewFileName As String

            UlFileName = "images/" & FileUpload1.FileName

            Me.FileUpload1.SaveAs(Server.MapPath(UlFileName))

            NewFileName = "images/Thumbnail_" & FileUpload1.FileName


            Dim objGraphic As System.Drawing.Image = System.Drawing.Image.FromFile(Server.MapPath(UlFil  eName))

            Dim objBitmap As Bitmap

            objBitmap = New Bitmap(objGraphic, yourWidth, yourHeight)

            objBitmap.Save(Server.MapPath(NewFileName), objGraphic.RawFormat)

            objGraphic.Dispose()

        End If

    End Sub


بجای متغییر yourWidth عرض عکس شما و بجای yourHeight ارتفاع عکس شما قرار میگیره

----------


## Ali_M.Eghbaldar

سلام دوستان  :قلب: 
از تاخیرهای زیاد بین پست ها شرمنده ، زیاد وقت نمیشه که بتونم سر بزنم  :چشمک: 
یک آموزش بسیار کاربردی میخوام بهتون یاد بدم که امیدوارم بدردتون بخوره
ممکنه در شرایطی نیاز داشته باشیم ، که از صفحه دیگر بصورت ( child ) که باز شده ، یک مقداری به صفحه قبلی منتقل بشه به شرطی که صفحه اول ، نیازی به لود مجدد نداشته باشه
برای این کار باید از javascipt کمک بگیریم  :لبخند: 

*1) در صفحه اول:*
نیاز به تعریف element داریم که مقدار برگشتی توش بشینه و از js قابل دسترسی باشه:
  <input type="text" id="ParameterForGet" />
نیاز به کدی داریم که بتونه صفحه دوم برای ما باز کنه :
 <a href="#" onclick="javascript**:window.open('selectAvatars.asp  x?src=ParameterForGet', 
'mywindow','location=1,status=1,scrollbars=1, width=500,height=700');">show new window for getting value </a>
    </div>
دقت کنید در این دستور ParameterForGet پارامتری است که مقداربرگشتی وابسته به آن است.

*2) در صفحه دوم :*
تابع js برای بازگردانندن مقدار به صفحه اول:
 <script type="text/javascript">

        function copyCode() {
            var txt = document.getElementById('TextBox');

            var base = window.opener;
            var src = base.document.getElementById('ParameterForGet');
            if (src && txt.value != '') {
                src.value = txt.value;
            }
        }
    </script>
دستور فراخوان تابع:
 <button onclick="copyCode();">
            click:put to previous page field
        </button>
و دستور گرفتن رشته :
 <input id="TextBox" type="text" />

امیدوارم بدردتون بخوره
_اگه سوالی بود فقط بصورت پیام خصوصی پاسخگوی شما هستم_
یا علی (ع)

----------


## Ali_M.Eghbaldar

*راه اندازی اولیه  Memebership (آموزش کامل)

*با سلام
هرچند که پست های زیادی در این زمینه وجود دارد ولی شاید کمتر پستی بطور کامل به این راه اندازی اولیه پرداخته باشد
سعی میکنم که کوتاه و جامع مطالب را قرار دهم.* 
*
*1) ایجاد جدول های Membership در دیتابیس پروژه (یا دیتابیس دیگر، فرقی نمی کند)
*Visual Studio Command Prompt را از کلید windows و سپس پوشه Visual Studio Tools اجرا کنید.و سپس مانند تصاویر زیر پیش می روید.

http://www.codeproject.com/KB/aspnet...ider/step1.JPG
http://www.codeproject.com/KB/aspnet...ider/step2.JPG
http://www.codeproject.com/KB/aspnet...ider/step3.JPG
http://www.codeproject.com/KB/aspnet...ider/step4.JPG
http://www.codeproject.com/KB/aspnet...ider/step5.JPG

*2) اضافه کردم کانکشن جداول memebership در Web.config
*در این مثال من مخصوصا دو کانکشن را گذاشته ام تا متوجه قضیه بشوید.
  <connectionStrings>
    <add name="mydbCon" connectionString="Data Source=.;Initial Catalog=mydb;Integrated Security=True"
        providerName="System.Data.SqlClient" />
    <remove name="LocalSqlServer" />
    <add name="*LocalSqlServer*" connectionString="Data Source=.;Initial Catalog=mydb;Integrated Security=True"
    providerName="System.Data.SqlClient" />
  </connectionStrings>

نام *LocalSqlServer* حتما باید با همین نام باشد.
استفاده از کد     <remove name="LocalSqlServer" /> هنگامی که دو کانکشن دارید، اجباری است. 

*3) بر حسب نیازتون از کنترل های بخش LOGIN استفاده کنید. این کنترل ها خودبخود توسط کانکش LocalSqlServer * *جداول membership را میشناسد.*
*4) برای راه اندازی اولیه جداول دو راه وجود دارد.*
4-1: ویزاردی: از طریق منوی website و گزینه ی ASP.NET Configuration
admin.jpg
برای اطلاعات بیشتر به لینک مراجعه کنید.
4-2: از طریق کنترل های مربوطه مانند: create user

* 5) احراز هویت در پوشه های امنیتی*
اگه صفحات های CMS شما فرضا در میسر
CMS\management\pages
قرار گرفته باشد، شما نباید اجازه دسترسی کاربرهای عادی (لاگین نکرده + تایم session تمام شده) را به آن صفحات بدهید.
بدین منظور در پوشه pages یک فایل web.config ساخته و کد های زیر را در آن قرار میدهد.
<?xml version="1.0"?>
<configuration>
  <location path="Default.aspx">

    <system.web>

      <authorization>

        <!--<allow users="Ali"/>-->
        <!--<deny users="*"/>-->
        <!--<deny users="?"/>-->
        
      </authorization>

    </system.web>

  </location>
</configuration>


توضیحات:
اگر کد allow users="ali" فعال باشد یعنی فقط کاربری با نام ali می تواند دسترسی داشته باشد.اگر کد deny users="*" فعال باشد یعنی هیچ کاربری نمی تواند دسترسی داشته باشد.اگر کد deny users="?" فعال باشد یعنی فقط کاربرانی می توانند دسترسی داشته باشند که لاگین کرده باشند (احراز هویت شده باشند) 
نکته : میتوانید ترکیبی استفاده کنید.
* 6) برگشت پس از عدم تایید و یا اتمام Session لاگین*
    <authentication mode="Forms">
      <forms cookieless="UseCookies" defaultUrl="~\error.aspx" loginUrl="~\error.aspx" protection="All" timeout="30">
      </forms>
    </authentication>
در این کد و در قسمت loginUrl مشخص میکنید که پس از اتمام تایم مورد و یا مورد غیر قانونی کاربرهای عادی به بخش های امنیتی، نظر کاربر به کجا هدایت شود.



**
لینک های مفید برای مطالعه در این زمینه
http://www.codeproject.com/Articles/...-Role-Provider
http://weblogs.asp.net/gurusarkar/se...-in-web-config

----------

