Good news for .net developer. That is from what i have found on the web.
On November 21, the vice president of Microsoft's .NET Developer division, Scott Guthrie, announced that his group had produced "great jQuery IntelliSense support" in for both Visual Studio 2008 and the free Visual Web Developer 2008 Express package in collaboration with the jQuery development team. This delivers on his promise, made in September, that such support would be forthcoming. Guthrie's blog post has instructions on how to grab and install the proper hotfix to add this capability.
Several programmers have written about this problem in detail. Brad Vincent noted the IntelliSense jQuery bug in a blog entry more than half a year before all the recent hoopla, and James Hart came up with a clever solution to javascript:void(0)the jQuery IntelliSense problem in Visual Studio. Hart's fix is to create a dummy JavaScript file that contains stubs to all of jQuery's calls and link to it within Visual Studio; the editor picks up the dummy APIs and auto-completes based on them, but the end-user's Web browser actually uses the jQuery library. Scott Hanselman has also put together a nice tutorial on working with jQuery inside VS 2008.
or read this for simple solution without installing hotfix http://blogs.msdn.com/webdevtools/archive/2008/10/28/rich-intellisense-for-jquery.aspx
Monday, January 12, 2009
Tuesday, December 9, 2008
Internet Explorer cannot open the Internet site, Operation aborted. Asp.net menu control.
This error is caused by rendered javascript code of asp.net control trying to change an element when the page is not completely loaded.
It happens when moving the mouse pointer to the menu items and the page is loading.
A solution to work around this issue is to surround the menu control with <div> tag.
Set its attribute visibility:hidden. On page_load, set it back to visible.
The purpose is to hide the menu control when the page is loading and show it after loading page is finished.
See the sample code bellow:
Trust me it works great with litle effort.
Dane
It happens when moving the mouse pointer to the menu items and the page is loading.
A solution to work around this issue is to surround the menu control with <div> tag.
Set its attribute visibility:hidden. On page_load, set it back to visible.
The purpose is to hide the menu control when the page is loading and show it after loading page is finished.
See the sample code bellow:
......
<script type="text/javascript">
function showMenu() {
document.getElementById("menuHeader").style.visibility='visible';
}
</script>
......
<body onload="showMenu()" >
<div id="menuHeader" style="visibility:hidden;">
<asp:Menu ID="Menu1" runat="server" Orientation="Horizontal" DataSourceID="SiteMapDataSource1"/>
</body>
......
Trust me it works great with litle effort.
Dane
Monday, November 17, 2008
Javascript and Asp.net
1) Access Asp.net controls via Javascript:
-Javascript in .aspx page
-Javascript in .js file
First, you have to get the id of the control after the page is rendered (IE/FireFox->View->Page Source->Find the the control id)
2) Add Javascript function to asp.net controls:
Example: Validate empty value in a textbox.
-In aspx page add javascript function as following
-In code behind, Add Following code on page_load
btnSubmit.Attributes.Add("onclick","IsEmpty()");
3)
-Javascript in .aspx page
document.getElementById('<%=NameOfControl.ClientID%>').PropertyName
-Javascript in .js file
First, you have to get the id of the control after the page is rendered (IE/FireFox->View->Page Source->Find the the control id)
document.getElementById('ctl00$ContentPlaceHolder1$txtFullName').focus();
2) Add Javascript function to asp.net controls:
NameOfControl.Attributes.Add("eventname","javascriptMethod") [vb]
NameOfControl.Attributes.Add("eventname","javascriptMethod") [C#]
Example: Validate empty value in a textbox.
-In aspx page add javascript function as following
<script type="javascript">
function IsEmpty()
{
if (document.getElementById('<%=textbox1.ClientID%>').value == "")
{
alert("Textbox is empty");
}
}
</script>
-In code behind, Add Following code on page_load
btnSubmit.Attributes.Add("onclick","IsEmpty()");
3)
Validators on update panel not working properly
The problem is occurred seriously on window 2003. Error messages of validators is not displayed properly.
-Simulate the problems:
1. Create a sample asp.net ajax application.
2. Drag a textbox, a requirefieldvalidator and a button to an update panel.
3. Deploy it to web server running window 2003.
4. Leave the value in the textbox empty, then click submit button. It work fine in this stage.
5 Enter some text and click submit. At this time, server is doing asynchronous post back to the server. Finally try to leave the value empty again and click submit. You will not see the error message of validator controls.
- Solution:
1. There is a work around to solve this problem by setting EnableClientScript = False of every validator controls under update panel. This will disable client validatation, so instead we need to do validation on server.
2. Another solution from Matt Gibbs's blog:
http://blogs.msdn.com/mattgi/archive/2007/01/23/asp-net-ajax-validators.aspx
It works fine most of the case,but it has a problem when setting "DisplayMode" of validation controls to "Dynamic". Validation is not fired unless the page submit two times.
-Simulate the problems:
1. Create a sample asp.net ajax application.
2. Drag a textbox, a requirefieldvalidator and a button to an update panel.
3. Deploy it to web server running window 2003.
4. Leave the value in the textbox empty, then click submit button. It work fine in this stage.
5 Enter some text and click submit. At this time, server is doing asynchronous post back to the server. Finally try to leave the value empty again and click submit. You will not see the error message of validator controls.
- Solution:
1. There is a work around to solve this problem by setting EnableClientScript = False of every validator controls under update panel. This will disable client validatation, so instead we need to do validation on server.
if(Page.IsValid)
{ //do actioin
}
2. Another solution from Matt Gibbs's blog:
http://blogs.msdn.com/mattgi/archive/2007/01/23/asp-net-ajax-validators.aspx
It works fine most of the case,but it has a problem when setting "DisplayMode" of validation controls to "Dynamic". Validation is not fired unless the page submit two times.
Wednesday, November 5, 2008
65 Excellent jQuery Resources (tutorials,cheat sheets,ebooks,demos,plugins…)
http://speckyboy.com/2008/04/02/65-excellent-jquery-resources-tutorialscheat-sheetsebooksdemosplugins/
Thursday, October 23, 2008
GridView Tips and Tricks using ASP.NET – Part III ( Fron dotnetcurry)
GridView Tips and Tricks using ASP.NET – Part III
The GridView control is quiet a handy control and is the most commonly used control when building an ASP.NET site. The more you work with it, the more you realize how powerful it can be while presenting data.
Moving ahead with our GridView Tips and tricks series, I have added some more tips in this article. The previous two articles on the Tips and Tricks are mentioned below:
For this article, we would be using the following template to populate the GridView.
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridView Tips and Tricks Part 2</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="CategoryID"
DataSourceID="SqlDataSource1" ShowFooter="true" AllowPaging="True" AllowSorting="True"
PageSize="5" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="CategoryID" InsertVisible="False" SortExpression="CategoryID">
<ItemTemplate>
<asp:Label ID="lblCategoryID" runat="server" Text='<%# Bind("CategoryID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="CategoryName" SortExpression="CategoryName">
<EditItemTemplate>
<asp:TextBox ID="txtCategoryName" runat="server" Text='<%# Bind("CategoryName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblCategoryName" runat="server" Text='<%# Bind("CategoryName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Description" SortExpression="Description">
<EditItemTemplate>
<asp:TextBox ID="txtDesc" runat="server" Text='<%# Bind("Description") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblDesc" runat="server" Text='<%# Bind("Description") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=SUPROTIM;Initial Catalog=Northwind;Integrated Security=True"
ProviderName="System.Data.SqlClient" SelectCommand="SELECT [CategoryID], [CategoryName], [Description] FROM [Categories]"
UpdateCommand="UPDATE [Categories] SET [CategoryName] = @CategoryName, [Description] = @Description WHERE [CategoryID] = @CategoryID"/>
</div>
</form>
</body>
</html>
The web.config holding the connection will look similar to the following:
<configuration>
<appSettings/>
<connectionStrings>
<add name="NorthwindConnectionString" connectionString="Data Source =(local);Integrated Security = SSPI; Initial Catalog=Northwind;"/>
</connectionStrings>
...
</configuration>
Tip 1: Change the color of a GridView Row based on some condition
C#
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.DataItem != null)
{
DataRowView drv = (DataRowView)e.Row.DataItem;
string catName = Convert.ToString(drv["CategoryName"]);
if (catName.Trim() == "Confections")
e.Row.BackColor = System.Drawing.Color.LightBlue;
}
}
VB.NET
Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If Not e.Row.DataItem Is Nothing Then
Dim drv As DataRowView = CType(e.Row.DataItem, DataRowView)
Dim catName As String = Convert.ToString(drv("CategoryName"))
If catName.Trim() = "Confections" Then
e.Row.BackColor = System.Drawing.Color.LightBlue
End If
End If
End Sub
Tip 2: How to create an Image Command Field Column and add to the GridView at runtime
C#
if (!Page.IsPostBack)
{
CommandField cmdField = new CommandField();
cmdField.ButtonType = ButtonType.Image;
cmdField.SelectImageUrl = "~/Images/Home_Np1.GIF";
cmdField.ShowSelectButton = true;
cmdField.HeaderText = "Select";
GridView1.Columns.Add(cmdField);
GridView1.DataBind();
}
VB.NET
If (Not Page.IsPostBack) Then
Dim cmdField As CommandField = New CommandField()
cmdField.ButtonType = ButtonType.Image
cmdField.SelectImageUrl = "~/Images/Home_Np1.GIF"
cmdField.ShowSelectButton = True
cmdField.HeaderText = "Select"
GridView1.Columns.Add(cmdField)
GridView1.DataBind()
End If
Tip 3: How to display images in the GridView from Filesystem based on an existing Column
Let us imagine that you have a folder ‘Images’ where you have stored images for each category. Eg: 1.GIF, 2.GIF, 3.GIF and so on. Now you want to display a different image based on each CategoryID. So for CategoryID = 1, the image is 1.GIF; for CategoryID=2, the image is 2.GIF and so on.
<asp:TemplateField>
<ItemTemplate>
<asp:Image runat="server" ImageUrl='<%# "~/Images/"+ Eval("CategoryID") + ".GIF" %>' >
</asp:Image>
</ItemTemplate>
</asp:TemplateField>
Tip 4: How to Retrieve Images from the database and display it in a GridView
I will assume that we have a image column called CatImg in the Categories table.
The first step would be to create an ImageHandler. In such scenarios such as the gridview, usually prefer to go in for a handler when I have to return binary data directly from the database. It gives more control on the resource returned. Moreover it is a preferred solution when you have to set the image programmatically.
To add a handler, right click project > Add New Item > Generic Handler > ShowImage.ashx. The code shown below, uses the Request.QueryString[“id”] to retrieve the CategoryID from it. The ID is then passed to the ‘ShowCatImage()’ method where the image is fetched from the database and returned in a MemoryStream object. We then read the stream into a byte array. Using the OutputStream.Write(), we write the sequence of bytes to the current stream and you get to see your image.
C#
<%@ WebHandler Language="C#" Class="ShowImage" %>
using System;
using System.Configuration;
using System.Web;
using System.IO;
using System.Data;
using System.Data.SqlClient;
public class ShowImage : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Int32 catid;
if (context.Request.QueryString["id"] != null)
catid = Convert.ToInt32(context.Request.QueryString["id"]);
else
throw new ArgumentException("No parameter specified");
context.Response.ContentType = "image/jpeg";
Stream strm = ShowCatImage(catid);
byte[] buffer = new byte[4096];
int byteSeq = strm.Read(buffer, 0, 4096);
while (byteSeq > 0)
{
context.Response.OutputStream.Write(buffer, 0, byteSeq);
byteSeq = strm.Read(buffer, 0, 4096);
}
//context.Response.BinaryWrite(buffer);
}
public Stream ShowCatImage(int catid)
{
string conn = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
SqlConnection connection = new SqlConnection(conn);
string sql = "SELECT catImg FROM Categories WHERE CategoryID = @ID";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@ID", catid);
connection.Open();
object img = cmd.ExecuteScalar();
try
{
return new MemoryStream((byte[])img);
}
catch
{
return null;
}
finally
{
connection.Close();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
VB.NET
<%@ WebHandler Language="vb" Class="ShowImage" %>
Imports System
Imports System.Configuration
Imports System.Web
Imports System.IO
Imports System.Data
Imports System.Data.SqlClient
Public Class ShowImage
Implements IHttpHandler
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim catid As Int32
If Not context.Request.QueryString("id") Is Nothing Then
catid = Convert.ToInt32(context.Request.QueryString("id"))
Else
Throw New ArgumentException("No parameter specified")
End If
context.Response.ContentType = "image/jpeg"
Dim strm As Stream = ShowCatImage(catid)
Dim buffer As Byte() = New Byte(4095){}
Dim byteSeq As Integer = strm.Read(buffer, 0, 4096)
Do While byteSeq > 0
context.Response.OutputStream.Write(buffer, 0, byteSeq)
byteSeq = strm.Read(buffer, 0, 4096)
Loop
'context.Response.BinaryWrite(buffer);
End Sub
Public Function ShowCatImage(ByVal catid As Integer) As Stream
Dim conn As String = ConfigurationManager.ConnectionStrings("NorthwindConnectionString").ConnectionString
Dim connection As SqlConnection = New SqlConnection(conn)
Dim sql As String = "SELECT catImg FROM Categories WHERE CategoryID = @ID"
Dim cmd As SqlCommand = New SqlCommand(sql, connection)
cmd.CommandType = CommandType.Text
cmd.Parameters.AddWithValue("@ID", catid)
connection.Open()
Dim img As Object = cmd.ExecuteScalar()
Try
Return New MemoryStream(CType(img, Byte()))
Catch
Return Nothing
Finally
connection.Close()
End Try
End Function
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
To access this image in the GridView based on the CategoryID, just add the following:
<asp:TemplateField>
<ItemTemplate>
<asp:Image runat="server" ImageUrl='<%# "ShowImage.ashx?id=" + Eval("CategoryID") %>' >
</asp:Image>
</ItemTemplate>
</asp:TemplateField>
Tip 5: How to programmatically enable/disable a control in the GridView when in the Edit Mode
If you want to quickly take a decision whether to enable or disable a control when the user edits the row, then use the Enabled attribute and set it to a method that returns a bool value:
<asp:TemplateField HeaderText="CategoryName" SortExpression="CategoryName">
<EditItemTemplate>
<asp:TextBox ID="txtCategoryName" runat="server" Enabled='<%# EnableDisableTextBox() %>' Text='<%# Bind("CategoryName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblCategoryName" runat="server" Text='<%# Bind("CategoryName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
C#
protected bool EnableDisableTextBox()
{
if (1 == 1)
return false;
}
VB.NET
Protected Function EnableDisableTextBox() As Boolean
If 1 = 1 Then
Return False
End If
End Function
You can test this code by adding a CommandField to the GridView as shown below
<asp:CommandField ButtonType="Link" ShowEditButton="true" />
Tip 6: How to insert an Image in between Rows of a GridView using ASP.NET
Please check my article on the same over here
Tip 7: How to loop through all the rows in all the pages of a GridView
One simple way to loop through all the rows in all the pages of a GridView is to access its DataSource. In this example, we will loop through the SQLDataSource to retrieve all the rows in a GridView and access its cell value. You can modify the logic depending on the type of controls you have added to the GridView
C#
protected void Button1_Click(object sender, EventArgs e)
{
DataSourceSelectArguments dsaArgs = new DataSourceSelectArguments();
DataView view = (DataView)SqlDataSource1.Select(dsaArgs);
DataTable dt = view.ToTable();
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
string s = dt.Rows[i][j].ToString();
}
}
}
VB.NET
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim dsaArgs As DataSourceSelectArguments = New DataSourceSelectArguments()
Dim view As DataView = CType(SqlDataSource1.Select(dsaArgs), DataView)
Dim dt As DataTable = view.ToTable()
For i As Integer = 0 To dt.Rows.Count - 1
For j As Integer = 0 To dt.Columns.Count - 1
Dim s As String = dt.Rows(i)(j).ToString()
Next j
Next i
End Sub
Well that was a quick overview of some of the most frequently used features of the GridView control. I hope you liked the article and I thank you for viewing it.
Subscribe to:
Posts (Atom)