通过设置datagridview的datasource将指定的数据库里面的table显示在datagridview中以后:
this.dataGridView1.AutoGenerateColumns = true; rdset rdset=new rdset (); rdsetTableAdapters.projectTableAdapter projectadapter = new rdsetTableAdapters.projectTableAdapter();
this.dataGridView1.DataSource = rdset.project;
projectadapter.Fill(rdset.project);
其中rdset.project表有三个列:project_name, project_label,time_used;我想只让第三个列(time_used)可编辑(第三列是空列,我是加在数据库中让用户填数据的,提交的时候将该行加到另一个表中,所以前两列的数据是不能改的) 这时要设置第一第二列只读怎么办?
我看到datagridview属性里面有一项readonly,但是这个作用于整个表,怎样才能实现?
this.dataGridView1.AutoGenerateColumns = true; rdset rdset=new rdset (); rdsetTableAdapters.projectTableAdapter projectadapter = new rdsetTableAdapters.projectTableAdapter();
this.dataGridView1.DataSource = rdset.project;
projectadapter.Fill(rdset.project);
其中rdset.project表有三个列:project_name, project_label,time_used;我想只让第三个列(time_used)可编辑(第三列是空列,我是加在数据库中让用户填数据的,提交的时候将该行加到另一个表中,所以前两列的数据是不能改的) 这时要设置第一第二列只读怎么办?
我看到datagridview属性里面有一项readonly,但是这个作用于整个表,怎样才能实现?
DataKeyNames="id" Width="402px" onrowupdating="GridView1_RowUpdating"
onrowcancelingedit="GridView1_RowCancelingEdit"
onrowediting="GridView1_RowEditing">
<Columns>
<asp:TemplateField >
<HeaderTemplate>Product</HeaderTemplate>
<ItemTemplate><%#Eval("Product") %></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate>Version</HeaderTemplate>
<ItemTemplate> <%#Eval("Version")%></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate>Description</HeaderTemplate>
<ItemTemplate> <%#Eval("Description")%>
<asp:Button ID="fahuo" Text="发货" OnClick="fahuo_Click" CommandArgument='<%#Eval("id") %>' runat="server"/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextAccAddress" runat="server" Text='<%# Eval("Description") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField HeaderText="编辑" ShowEditButton="True" />
</Columns>
</asp:GridView>
<EditItemTemplate>
<asp:TextBox ID="TextAccAddress" runat="server" Text='<%# Eval("Description") %>'></asp:TextBox>
</EditItemTemplate>
只编辑你想要的列。例如你的第三个列(time_used)
即可剩下你应该会了吧
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
BindTest();//绑定数据就是显示在gridview的数据
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
BindTest();//绑定数据就是显示在gridview的数据
}
然后一列一列的设置了,还好,不影响外观.