我看到这样一个例子
' Visual Basic
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) _
Handles DataGrid1.ItemDataBound
Dim itemType As ListItemType = e.Item.ItemType
If ((itemType = ListItemType.Pager) Or _
(itemType = ListItemType.Header) Or _
(itemType = ListItemType.Footer)) Then
Return
Else
Dim button As LinkButton = _
CType(e.Item.Cells(0).Controls(0), LinkButton)
e.Item.Attributes("onclick") = _
Page.GetPostBackClientHyperlink(button, "")
End If
End Sub 但是 Dim button As LinkButton = _
CType(e.Item.Cells(0).Controls(0), LinkButton)
报错啊!!!
' Visual Basic
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) _
Handles DataGrid1.ItemDataBound
Dim itemType As ListItemType = e.Item.ItemType
If ((itemType = ListItemType.Pager) Or _
(itemType = ListItemType.Header) Or _
(itemType = ListItemType.Footer)) Then
Return
Else
Dim button As LinkButton = _
CType(e.Item.Cells(0).Controls(0), LinkButton)
e.Item.Attributes("onclick") = _
Page.GetPostBackClientHyperlink(button, "")
End If
End Sub 但是 Dim button As LinkButton = _
CType(e.Item.Cells(0).Controls(0), LinkButton)
报错啊!!!
大体的原理倒是那样,就是利用Attributes
<asp:HyperLinkColumn DataTextField="PersonID" HeaderText="ID"></asp:HyperLinkColumn>
<asp:BoundColumn DataField="PersonID" HeaderText="PersonID"></asp:BoundColumn>
asp:BoundColumn DataField="PersonEmail" HeaderText="PersonEmail"></asp:BoundColumn>
<asp:BoundColumn DataField="PersonName" HeaderText="PersonName"></asp:BoundColumn>
<asp:BoundColumn DataField="PersonSex" HeaderText="PersonSEX"></asp:BoundColumn>
<asp:BoundColumn DataField="PersonImageType" HeaderText="PersonImageType"></asp:BoundColumn>
</Columns>
不行,
转换类型无效。
<Columns>
<asp:templatecolumn>
<itemtemplate>
<asp:linkbutton text='<%# container.dataitem("PersonID") %> ' Runat="server" ></asp:linkbutton>
</itemtemplate>
</asp:templatecolumn>
<asp:BoundColumn DataField="PersonEmail" HeaderText="PersonEmail"></asp:BoundColumn>
<asp:BoundColumn DataField="PersonName" HeaderText="PersonName"></asp:BoundColumn>
<asp:BoundColumn DataField="PersonSex" HeaderText="PersonSEX"></asp:BoundColumn>
<asp:BoundColumn DataField="PersonImageType" HeaderText="PersonImageType"></asp:BoundColumn>
</Columns>
结果还是不行。*********************************************************************
提示:类型“LinkButton”的控件“DataGrid1__ctl2_Linkbutton1”必须放在具有 runat=server 的窗体标记内。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: 类型“LinkButton”的控件“DataGrid1__ctl2_Linkbutton1”必须放在具有 runat=server 的窗体标记内。***********************************************************************俺最后仔细检查了,FORM和DATAGRID都runat=server 了,俺心不甘那,问题解决不了俺难受啊!!!
<ItemStyle Width="100px"></ItemStyle>
<ItemTemplate>
<asp:LinkButton id="LinkButton1" runat="server">详细信息.....</asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
把代码写在这个事件里
private void DataGrid1_ItemCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
}
Drop Table Person
Go
Create Table Person
(
PersonID Int Identity,
PersonEmail Varchar(255),
PersonName Varchar(255),
PersonSex Char(1),
PersonDOB DateTime,
PersonImage Image,
PersonImageType Varchar(255)
)
*********************************************
WebForm5.aspx<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm5.aspx.vb" Inherits="Webwuye.WebForm5"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm5</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<INPUT id="PersonImage" style="Z-INDEX: 101; LEFT: 241px; WIDTH: 228px; ZOOM: 95%; POSITION: absolute; TOP: 26px; HEIGHT: 24px; borderBottomWidth: 2cm"
type="file" size="18" name="PersonImage" runat="server">
<asp:button id="Button1" style="Z-INDEX: 102; LEFT: 256px; POSITION: absolute; TOP: 60px" onclick="click"
Text=" 添 加 " Runat="server"></asp:button></form>
<P><asp:image id="Image1" style="Z-INDEX: 103; LEFT: 17px; POSITION: absolute; TOP: 11px" runat="server"
ImageUrl='webform5.aspx?ID=<%# databinder.eval(container.dataitem,"personid"%>' Height="142px" Width="197px"></asp:image></P>
</FORM><asp:datagrid id="DataGrid1" style="Z-INDEX: 104; LEFT: 41px; POSITION: absolute; TOP: 235px"
runat="server" AutoGenerateColumns="False">
<Columns>
<asp:HyperLinkColumn DataNavigateUrlField="personid" DataNavigateUrlFormatString="webform5.aspx?imgid={0}"
DataTextField="personid" HeaderText="personID"></asp:HyperLinkColumn>
<asp:BoundColumn DataField="PersonEmail" HeaderText="PersonEmail"></asp:BoundColumn>
<asp:BoundColumn DataField="PersonName" HeaderText="PersonName"></asp:BoundColumn>
<asp:BoundColumn DataField="PersonSex" HeaderText="PersonSEX"></asp:BoundColumn>
<asp:BoundColumn DataField="PersonImageType" HeaderText="PersonImageType"></asp:BoundColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" ForeColor="#4A3C8C" BackColor="#E7E7FF" Mode="NumericPages"></PagerStyle>
</asp:datagrid>
</body>
</HTML>
Imports System.Data.SqlClient
Imports System.Data
Imports System.Web.UI.WebControlsPublic Class WebForm5
Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub
Protected WithEvents PersonImage As System.Web.UI.HtmlControls.HtmlInputFile
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents Image1 As System.Web.UI.WebControls.Image '注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
Dim imgID As Int16 = Request.QueryString("ImgID") Dim myConnection As New SqlConnection("Data Source=localhost;Initial Catalog=test;User Id=sa;Password=;")
Dim myCommand As New SqlCommand If imgID > 0 Then
myCommand.CommandText = "Select * from Person where personId =" & imgID
Else
myCommand.CommandText = "Select * from Person"
End If
myCommand.Connection = myConnection
Dim myDataReader As SqlDataReader
Try
myConnection.Open()
If imgID > 0 Then
myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
If myDataReader.Read() Then
' Do While (myDataReader.Read())
Response.ContentType = "image/pjpeg"
'Response.ContentType = myDataReader.Item("PersonImageType")
'Image1.DataBind = myDataReader.Item("prosnimage")
Response.BinaryWrite(myDataReader.Item("PersonImage"))
' Loop
End If
Else
DataGrid1.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
DataGrid1.DataBind()
End If
myConnection.Close() Catch SQLexc As SqlException
Response.Write("Read Failed : " & SQLexc.ToString())
End Try
'Dim DB As Container()
End Sub
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then ' e.Item.Attributes.Add("onclick", "this.style.backgroundColor='#FFFFFF';alert('您点击的是:\n\n第" _
'+ e.Item.Cells(0).Controls(0).ToString() + "行\n\n文章标题是:" + e.Item.Cells(0).Text.Replace(",", "\'") + "')")
Dim Hpl As HyperLink = CType(e.Item.Cells(0).Controls(0), HyperLink)
e.Item.Attributes("onclick") = Page.GetPostBackClientHyperlink(Hpl, "DataNavigateUrlFormatString") 'Dim button1 As LinkButton = CType(e.Item.Cells(0).Controls(0), LinkButton)
'e.Item.Attributes("onclick") = Page.GetPostBackClientHyperlink(button1, "") ' If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
' e.Item.Attributes.Add("onclick", "this.style.backgroundColor='#FFFFFF';alert('您点击的是:\n\n第" _
'+ e.Item.ItemIndex.ToString() + "行\n\n文章标题是:" + e.Item.Cells(0).Text.Replace(",", "\'") + "')")
''e.Item.Cells(1).Text = e.Item.Cells(1).Text.ToString()
'If e.Item.Cells(0).Text.Length > 30 Then
' e.Item.Attributes.Add("Title", e.Item.Cells(0).Text)
' e.Item.Cells(0).Text = e.Item.Cells(0).Text.Substring(0, 28) + "…"
'End If
End If
End SubPublic Sub Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim intImageSize As Int64
Dim ImageStream As Stream
Dim strImageType As String ' 获得图片的大小
intImageSize = PersonImage.PostedFile.ContentLength
'获得图片类型()
strImageType = PersonImage.PostedFile.ContentType
Response.Write(strImageType.ToString)
'If strImageType.ToString() <> "image/pjpeg" Then
' Response.Write("<script language=javascript>alert('对不起请选择图片类型文件!')</script>")
' Exit Sub
'End If '读取图片
ImageStream = PersonImage.PostedFile.InputStream
'建立图片长度的字节数组
Dim ImageContent(intImageSize) As Byte
'从图片源读入到ImageContent字节数组中
ImageStream.Read(ImageContent, 0, intImageSize) ' 创建Connection和Command对象
Dim strCnn As String = "Data Source=localhost;Initial Catalog=test;User Id=sa;Password=;"
Dim myConnection As New SqlConnection(strCnn)
'Dim myCommand As New SqlCommand("sp_person_isp", myConnection) Dim strCmd As String = "insert into person (PersonImage) values (@imgPerson) "
Dim myCommand As New SqlCommand(strCmd, myConnection)
myCommand.Parameters.Add("@imgPerson", SqlDbType.Image).Value = ImageContent
Try
myConnection.Open()
myCommand.ExecuteNonQuery()
'myConnection.Close()
Response.Write("<script language=javascript>alert('添加成功!')</script>")
'Response.Write("添加成功!")
Catch SQLexc As SqlException
'Response.Write("<li> 添加失败,Message原因:" & SQLexc.Message())
Response.Write("<li> 添加失败,ToString原因:" & SQLexc.ToString())
Finally
myConnection.Close()
End Try
End Sub
End Class