<asp:datagrid id="gzyj" OnCancelCommand="gzyjCancelCommand" OnUpdateCommand="gzyjUpdateCommand" OnEditCommand="gzyjEditCommand" OnItemCreated="ItemCreated" DataKeyField="gzyjid" font-names="verdana"font-size="X-Small" BorderWidth="1px" BorderColor="Black" BorderStyle="Solid" CellPadding="2" BackColor="White" CssClass="Shadow" AutoGenerateColumns="False" Runat="server"> <EditItemStyle Font-Bold="True" BackColor="Yellow"></EditItemStyle> <AlternatingItemStyle BackColor="PaleGoldenrod"></AlternatingItemStyle> <ItemStyle BackColor="Beige"></ItemStyle> <Columns> <asp:TemplateColumn HeaderText="工作业绩">
<HeaderStyle HorizontalAlign="Center" Width="330px" BackColor="#3399FF"> <ItemTemplate>
<asp:label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "yj") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:textbox runat="server" width="80px" id="txtyj" Text='<%# DataBinder.Eval(Container.DataItem, "yj") %>'/> ///这一句里面的width=就行了............ </EditItemTemplate> </asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="<img src=images/ok.gif border=0 align=absmiddle alt='保存'>"
CancelText="<img src=images/cancel.gif border=0 align=absmiddle alt='取消'>" EditText="<img src=images/edit.gif border=0 align=absmiddle alt='编辑'>">
<ItemStyle HorizontalAlign="Center" BackColor="Yellow"></ItemStyle>
</asp:EditCommandColumn>
</Columns>
</asp:datagrid>.cs里面用以下更新
public void gzyjUpdateCommand(Object sender, DataGridCommandEventArgs e)
{
TextBox txtyj= (TextBox) e.Item.FindControl("txtyj");
string sb ="UPDATE gzyj SET yj=@yj WHERE gzyjid=@nid"; SqlConnection conn = new SqlConnection(publicDB.strConn);
SqlCommand cmd = new SqlCommand(sb, conn); SqlParameter p1 = new SqlParameter("@nid", SqlDbType.Int);
p1.Direction = ParameterDirection.Input;
p1.Value = gzyj.DataKeys[e.Item.ItemIndex];
cmd.Parameters.Add(p1); SqlParameter p2 = new SqlParameter("@yj", SqlDbType.NVarChar, 30);
p2.Direction = ParameterDirection.Input;
p2.Value = txtyj.Text.Trim();
cmd.Parameters.Add(p2);
try
{
conn.Open();
cmd.ExecuteNonQuery();
Response.Write("<script>alert('执行成功!');</script>");
}
catch(Exception ex)
{
Response.Write("<script language=javascript>alert('"+ex.Message.Replace("'","'")+"');</script>");
}
finally
{
}
conn.Close();
gzyjFindData(); gzyj.EditItemIndex = -1;
//刷新表格
int pageKey = gzyj.CurrentPageIndex;
gzyjBindData(pageKey);
}
<HeaderStyle HorizontalAlign="Center" Width="330px" BackColor="#3399FF"> <ItemTemplate>
<asp:label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "yj") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:textbox runat="server" width="80px" id="txtyj" Text='<%# DataBinder.Eval(Container.DataItem, "yj") %>'/> ///这一句里面的width=就行了............ </EditItemTemplate> </asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="<img src=images/ok.gif border=0 align=absmiddle alt='保存'>"
CancelText="<img src=images/cancel.gif border=0 align=absmiddle alt='取消'>" EditText="<img src=images/edit.gif border=0 align=absmiddle alt='编辑'>">
<ItemStyle HorizontalAlign="Center" BackColor="Yellow"></ItemStyle>
</asp:EditCommandColumn>
</Columns>
</asp:datagrid>.cs里面用以下更新
public void gzyjUpdateCommand(Object sender, DataGridCommandEventArgs e)
{
TextBox txtyj= (TextBox) e.Item.FindControl("txtyj");
string sb ="UPDATE gzyj SET yj=@yj WHERE gzyjid=@nid"; SqlConnection conn = new SqlConnection(publicDB.strConn);
SqlCommand cmd = new SqlCommand(sb, conn); SqlParameter p1 = new SqlParameter("@nid", SqlDbType.Int);
p1.Direction = ParameterDirection.Input;
p1.Value = gzyj.DataKeys[e.Item.ItemIndex];
cmd.Parameters.Add(p1); SqlParameter p2 = new SqlParameter("@yj", SqlDbType.NVarChar, 30);
p2.Direction = ParameterDirection.Input;
p2.Value = txtyj.Text.Trim();
cmd.Parameters.Add(p2);
try
{
conn.Open();
cmd.ExecuteNonQuery();
Response.Write("<script>alert('执行成功!');</script>");
}
catch(Exception ex)
{
Response.Write("<script language=javascript>alert('"+ex.Message.Replace("'","'")+"');</script>");
}
finally
{
}
conn.Close();
gzyjFindData(); gzyj.EditItemIndex = -1;
//刷新表格
int pageKey = gzyj.CurrentPageIndex;
gzyjBindData(pageKey);
}
这个示例可根据文本长度动态控制文本框长度。我研究了好半天才做出来的,别忘了把分给我!
-----------------------------------------------------------------------------------------
if(e.Item.ItemType == ListItemType.EditItem)
{
if(e.Item.Controls[1].Controls[1].GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
TextBox tb = (TextBox)e.Item.Controls[1].Controls[1];
int tbwidth=tb.Text.Trim().Length*20;
if(tbwidth<380)
tb.Width = Unit.Parse((tb.Text.Trim().Length*15).ToString()+"px");
else
tb.Width = Unit.Parse("380px");
tb.Attributes.Add("style","border-color:#000040;border-width:1px;border-style:Solid;");
tb.Text = Server.HtmlDecode(tb.Text);
}
}
----------------------------------------------------------------------------------------
点击DataGrid的单元格,单元格里面就变成文本框,修改里面的数据,
点击别的单元格里面的刚才的数据被修改
类似Excel