问题1:点击修改后出现的TexTBox可否改变其外观?比如某些列的TextBox不要那么长的宽度;或者某些列用其它控件代替,比如DropDownList; 
---使用模板列,在EditTemplate里面可以随意放你想要用的控件

解决方案 »

  1.   

    问题2:在任意行输入后,如何写回DataTable中对应的行上去?即:更新按钮中的代码如何生成?private  void  DataGrid1_UpdateCommand()  
    {  
             这里如何写代码以更新DataTable中的信息???  
    }  
    ----一般情况下,这都是直接访问数据库了,因为WebForm和WinForm的机制是不同的
      

  2.   

    问题1:在哪里选用模板列?或者说在模板列中随意放控件是通过vs.netC#的设计器来实现,还是在.aspx.cs中用代码来实现?问题2:很多书上说,DataSet就可以在离线的情况下进行对数据的操作,那么如果我要实现的功能是:
    先在客户端把所有的信息输入完毕后(其间客户端输入的信息在没有送到server端前,可任意修改,删除)这样的功能成了空话了吗?
    如果不是的一句空话,那么如何通过datagrid修改DataTable中的信息呢?
      

  3.   

    你可以使用TemplateColumn
    <asp:TemplateColumn>
    <ItemStyle Width="40%"></ItemStyle>
    <HeaderTemplate>
    <asp:Label id="Label1" runat="server">處理意見</asp:Label>
    </HeaderTemplate>
    <ItemTemplate>
    <asp:TextBox id=TextBox1 runat="server" Width="100%" CssClass="Normal" TextMode="MultiLine" ReadOnly=True Text='<%#DataBinder.Eval(Container.DataItem,"Comment")%>'></asp:TextBox>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox id=TextBox2 runat="server" Width="50%" CssClass="Normal" TextMode="MultiLine" ReadOnly=True Text='<%#DataBinder.Eval(Container.DataItem,"Comment")%>'></asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateColumn><EditItemTemplate></EditItemTemplate>
    之间的就是在Edit状态时显示的TextBox样式,
    并且你在DbGrid里面放TemlateColumn之后,就可以
    在DbGrid点右键->"Edit Template"里面来直接编辑你要放在DbGrid里面的WebControl在样式了,
    很方便的喔,当然你说的DropDownList也是可以的!
    并且Bind()数据也超方便!!!有问题再联系!!!!
      

  4.   

    问题2:很多书上说,DataSet就可以在离线的情况下进行对数据的操作,那么如果我要实现的功能是:
    先在客户端把所有的信息输入完毕后(其间客户端输入的信息在没有送到server端前,可任意修改,删除)这样的功能成了空话了吗?
    如果不是的一句空话,那么如何通过datagrid修改DataTable中的信息呢?WebForm和WinForm处理起来稍微有点不同因为考虑到服务器端压力的问题
    一般是不会缓存这个DataTable的,这样的话,一般是直接访问数据库
      

  5.   

    问题1:是在HTML这边写的,无关CS事!!!问题2:先New一个DataTable,作为DbGrid的DataSource;
          这样在编辑完成之后再一并写进DB就OK了啊;
      

  6.   

    为什么我的第一列,和第二列选定的是绑定列,但在设计模式下,还是显示的
    abc |abc|数据绑定|数据绑定|
    另外:是否需要.aspx中的
    <Columns>
    <asp:EditCommandColumn ButtonType="PushButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
    <asp:ButtonColumn Text="删除" ButtonType="PushButton" CommandName="Delete"></asp:ButtonColumn>
    <asp:BoundColumn DataField="Column1" HeaderText="姓名"></asp:BoundColumn>
    <asp:BoundColumn DataField="Column2" HeaderText="口令"></asp:BoundColumn>
    <asp:BoundColumn DataField="Column3" HeaderText="性别"></asp:BoundColumn>
    <asp:BoundColumn DataField="Column4" HeaderText="年龄"></asp:BoundColumn>
    <asp:BoundColumn DataField="Column5" HeaderText="职务"></asp:BoundColumn>
    <asp:BoundColumn DataField="Column6" HeaderText="编号"></asp:BoundColumn>
    </Columns>
    都设为模板列???
      

  7.   

    为什么在datagrid上的模板列上加上
    <asp:TemplateColumn HeaderText="性别">
    <HeaderTemplate>
    <FONT style="FONT-SIZE: 9pt" face="宋体">性别</FONT>
    </HeaderTemplate>
    <ItemTemplate>
    <asp:Label id=Label10 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Column3") %>'>
    </asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:DropDownList id="tempddl" runat="server">
    <asp:ListItem Value="man">男</asp:ListItem>
    <asp:ListItem Value="woman">女</asp:ListItem>
    </asp:DropDownList>
    </EditItemTemplate>
    </asp:TemplateColumn>运行后点击编辑就报错呀?
    报错:
    “/webapp1”应用程序中的服务器错误。
    --------------------------------------------------------------------------------指定的转换无效。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 指定的转换无效。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
    [InvalidCastException: 指定的转换无效。]
       System.Web.UI.WebControls.ListControl.LoadViewState(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Page.LoadPageViewState()
       System.Web.UI.Page.ProcessRequestMain()
      

  8.   

    在没有连接到数据库之前,客户端对datagrid做了修改后,如何更新DataTable中对应的数据行呀?
      

  9.   

    [InvalidCastException: 指定的转换无效。]
       System.Web.UI.WebControls.ListControl.LoadViewState(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
       System.Web.UI.Page.LoadPageViewState()
       System.Web.UI.Page.ProcessRequestMain()ItemTemplate也要相应的设为:DropDownList
      

  10.   

    自已找一下datagrid,很多很多關於這個控件的!
      

  11.   

    如果说DataSet的DataTable是创建在server端的,那么既然我在save_Click()上,客户端在没有连接到数据库的情况下都能向其写进一行数据,为什么我不能在datagrid中行的更新按钮上修改DataTable中的数据呢?
      

  12.   

    当使用了TemplateColumn之后,
    在HTML的<asp:TemplateColumn>...</asp:TemplateColumn>中定义标记有:
    标题栏显示内容:<HeaderTemplate>...</HeaderTemplate>
    非编辑状态:<ItemTemplate>...</ItemTemplate>
    编辑状态:<EditItemTemplate>...</EditItemTemplate>
    新增行:<FooterEditItemTemplate>...</FooterEditItemTemplate>所以你说的点了编辑之后出错,就要看你的:<EditItemTemplate>...</EditItemTemplate>是否定义;注:以上代码都是在HTML文件中编写(建议用编辑器生成)
       在DbGrid右键:Edit Template->然后选择你想要编辑的Column,
       就可以进行编辑
      

  13.   

    呵呵,建议楼主去看一下ViewState相关的一些知识,
      

  14.   

    谢谢,关于模板列的问题已经解决了
    现在我求的是在不边接到数据库的情况下,通过datagrid修改DataTable的问题
    即:问题2:在任意行输入后,如何写回DataTable中对应的行上去?即:更新按钮中的代码如何生成?
      

  15.   

    老兄你这个问题搞了很久了,不妨看一个完整的利用DataGrid编辑、修改、删除记录的方法
    http://dotnet.aspx.cc/ShowDetail.aspx?id=8ADE535F-AD40-4DE3-A962-A64B4FAF12C4
      

  16.   

    老大!
    孟子的示例是先接到了数据库上。用update_command直接写回数据库
    再通过source读回,绑定而我需要的是,先在没有连接到数据库的情况下生成datatable,并以datagrid进行输入,写进datatable,等批量写datatable后,再一次性写回数据库
      

  17.   

    string FirstName = ((TextBox)e.Item.Cells[0].Controls[0]).Text;//为什么孟子的这句放进我的代码中运行点编辑:
    就报错:System.InvalidCastException: 指定的转换无效。private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    dataSet1=new DataSet();
    if (ViewState["myDst"] != null)
    dataSet1=(DataSet)ViewState["myDst"];
    tempTable=new DataTable();
    Column1=new DataColumn();
    Column2=new DataColumn();
    Column3=new DataColumn();
    Column4=new DataColumn();
    Column5=new DataColumn();
    Column6=new DataColumn();
    tempTable.Columns.Add(Column1);
    tempTable.Columns.Add(Column2);
    tempTable.Columns.Add(Column3);
    tempTable.Columns.Add(Column4);
    tempTable.Columns.Add(Column5);
    tempTable.Columns.Add(Column6);

    dataSet1.Tables.Add(tempTable);
    ViewState["myDst"] = dataSet1;
    string FirstName = ((TextBox)e.Item.Cells[0].Controls[0]).Text;//为什么孟子的这句放进我的代码中运行点编辑:
    就报错:System.InvalidCastException: 指定的转换无效。 //string LastName = ((TextBox)e.Item.Cells[2].Controls[1]).Text; dataSet1.Tables[0].Rows[e.Item.ItemIndex][0]=FirstName.ToString();
    dataSet1.Tables[0].AcceptChanges();
    DataGrid1.DataSource = dataSet1.Tables[0];
    DataGrid1.DataBind();
                    gridindexcount.Text=e.Item.Cells[0].Text;
    }
      

  18.   

    为什么还是不能更新???
    private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    dataSet1=new DataSet();
    if (ViewState["myDst"] != null)
    dataSet1=(DataSet)ViewState["myDst"];
    tempTable=new DataTable();
    Column1=new DataColumn();
    Column2=new DataColumn();
    Column3=new DataColumn();
    Column4=new DataColumn();
    Column5=new DataColumn();
    Column6=new DataColumn();
    tempTable.Columns.Add(Column1);
    tempTable.Columns.Add(Column2);
    tempTable.Columns.Add(Column3);
    tempTable.Columns.Add(Column4);
    tempTable.Columns.Add(Column5);
    tempTable.Columns.Add(Column6);

    dataSet1.Tables.Add(tempTable);
    ViewState["myDst"] = dataSet1;
    //string fFirstName = e.Item.Cells[4].Controls[0].GetType().ToString();
                    //string FirstName = fFirstName; string FirstName = ((LiteralControl)(e.Item.Cells[2].Controls[0])).Text;
    //string LastName = ((TextBox)e.Item.Cells[2].Controls[1]).Text; dataSet1.Tables[0].Rows[e.Item.ItemIndex][2]=FirstName.ToString();
    //dataSet1.Tables[0].AcceptChanges();
    DataGrid1.DataSource = dataSet1.Tables[0];
    DataGrid1.DataBind();
                    gridindexcount.Text=e.Item.Cells[0].Text;
    }