if(e.Item.ItemType==ListItemType.EditItem)
{
((TextBox)e.Item.Cells[3].Controls[0]).Width=Unit.Pixel(320);//文本框宽度
((TextBox)e.Item.Cells[3].Controls[0]).CssClass="textface";//文本框样式表
((TextBox)e.Item.Cells[3].Controls[0]).ForeColor=Color.Red;//文字颜色
}
{
((TextBox)e.Item.Cells[3].Controls[0]).Width=Unit.Pixel(320);//文本框宽度
((TextBox)e.Item.Cells[3].Controls[0]).CssClass="textface";//文本框样式表
((TextBox)e.Item.Cells[3].Controls[0]).ForeColor=Color.Red;//文字颜色
}
我找不到唉!
还有我vb做的
((TextBox)e.Item.Cells[3].Controls[0]).Width=Unit.Pixel(320);
这里的(TextBox)vb怎么转啊
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Page Debug=True %>
<script language="VB" runat="server">
Dim i as Integer
Dim strconn As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + Server.MapPath(".")+"/db/kk.mdb"
Sub Page_Load(Src As Object, E As EventArgs)
If Not (IsPostBack)
BindGrid()
End If
End Sub Sub BindGrid()
Dim myConnection as New OleDbConnection (strConn)
Dim DS As DataSet
Dim MyCommand As OleDbDataAdapter
MyCommand = new OleDbDataAdapter("SELECT boardid,boardtype,class FROM [board] ORDER BY boardid ASC", MyConnection)
DS = new DataSet()
MyCommand.Fill(DS, "board")
MyDataGrid.DataSource=DS.Tables("board").DefaultView
MyDataGrid.DataBind()
End Sub
Public Sub MyDataGrid_Cancel(sender As Object, e As DataGridCommandEventArgs)
MyDataGrid.EditItemIndex = -1
BindGrid()
End Sub Sub MyDataGrid_Edit(Sender As Object, E As DataGridCommandEventArgs)
MyDataGrid.EditItemIndex = CInt(E.Item.ItemIndex)
BindGrid()
End Sub Public Sub MyDataGrid_Update(sender As Object, e As DataGridCommandEventArgs)
Dim txtCount As TextBox = CType(e.Item.Cells(1).Controls(0), TextBox)
Response.Write("<FONT COLOR=#CC0000>" & txtCount.Text & "</FONT>")
End Sub Sub MyDataGrid_Delete(sender As Object, e As DataGridCommandEventArgs)
dim strID as string = MyDataGrid.DataKeys(e.Item.ItemIndex)
Response.write(strID)
End Sub Sub myItemDataBound(sender as Object , e as DataGridItemEventArgs)
If e.Item.ItemType=ListItemType.EditItem then
For i = 0 to e.Item.Cells.Count - 3
Dim txt As TextBox = CType(e.Item.Cells(i).Controls(0), TextBox)
txt.BorderColor = System.Drawing.Color.red
txt.BorderWidth = Unit.Pixel(1)
txt.BackColor = System.Drawing.Color.FromName("#D4D4D4")
If i mod 2 <> 0 then
txt.Width=Unit.Percentage(100)
Else
txt.Width=Unit.Percentage(70)
End If
Next i
End If
End Sub Sub myItemCreated(Sender As Object, e As DataGridItemEventArgs)
If e.Item.ItemType=ListItemType.Item or e.Item.ItemType=ListItemType.AlternatingItem or e.Item.ItemType=ListItemType.EditItem then
Dim myTableCell As TableCell
myTableCell = e.Item.Cells(4)
Dim myDeleteButton As LinkButton
myDeleteButton = myTableCell.Controls(0)
myDeleteButton.Attributes.Add("onclick", "return confirm('Are you Sure you want to delete this recoders?');")
End If
End Sub
</script>
<Form runat="server" ID="editDataGrid">
<ASP:DataGrid id="MyDataGrid" runat="server"
Width="300"
ShowFooter="false"
OnCancelCommand="MyDataGrid_Cancel"
OnUpdateCommand="MyDataGrid_Update"
OnEditCommand="MyDataGrid_Edit"
OnDeleteCommand="MyDataGrid_Delete"
AutoGenerateColumns="false"
DataKeyField="boardid"
OnItemDataBound="myItemDataBound"
OnItemCreated="myItemCreated">
<Columns>
<asp:BoundColumn DataField="boardid" HeaderText="ID"/>
<asp:BoundColumn DataField="boardtype" HeaderText="Type"/>
<asp:BoundColumn DataField="class" HeaderText="Class"/>
<asp:editcommandcolumn edittext="Edit" canceltext="Cancel" updatetext="Update" itemstyle-wrap="false"/>
<asp:buttoncolumn text="Delete" commandname="Delete" />
</Columns>
</ASP:DataGrid>
</Form>
就是外面的框撑得很大的
if(e.Item.ItemType == ListItemType.EditItem)
{
TextBox tb = (TextBox)e.Item.Cells[5].Controls[0];
tb.TextMode=TextBoxMode.MultiLine ;
根据你的需要设置吧
}
就是列一多,比如7列,编辑的时候,里面的textbox和外面的边框当中有很大的一块
列数少的时候,textbox和外面的边框只有很小的一丝,挺不错的。
不知道这个能不能修改
<style>
input{width:96%;}
</style>
这样Textbox就与单元格大小差不多呢!
我把样式放在<head></head>之间对巴
这样对整个页面都有效了