<asp:DataGrid id="dg_allprocess" runat="server" Width="99%" BorderStyle="Double" AutoGenerateColumns="False" BorderColor="#CCCCCC" CssClass="table-outline" AllowSorting="True">
<SelectedItemStyle Wrap="False"></SelectedItemStyle>
<ItemStyle CssClass="table-con"></ItemStyle>
<HeaderStyle CssClass="table-outline"></HeaderStyle>
<Columns>
<asp:BoundColumn Visible="False" DataField="ID" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="ProcessName" HeaderText="流程名称"></asp:BoundColumn>
<asp:BoundColumn Visible="False" DataField="IsRead"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="读">
<ItemTemplate>
<asp:CheckBox id="chkRead" runat="server" Text="允许"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<SelectedItemStyle Wrap="False"></SelectedItemStyle>
<ItemStyle CssClass="table-con"></ItemStyle>
<HeaderStyle CssClass="table-outline"></HeaderStyle>
<Columns>
<asp:BoundColumn Visible="False" DataField="ID" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="ProcessName" HeaderText="流程名称"></asp:BoundColumn>
<asp:BoundColumn Visible="False" DataField="IsRead"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="读">
<ItemTemplate>
<asp:CheckBox id="chkRead" runat="server" Text="允许"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
解决方案 »
- 关闭thickbox后,textbox无法聚焦
- 宋体字体格式显示问题,问了很多人不知道怎么解决
- 如何有owc组件生产这样的数据图表或者其它方法实现也可以
- 终端用FTP在服务器端下载文件,下到40多M就报错
- page_load 有时候没有被触发?
- ASP.NET 导入Excel数据,量大时,导入慢的问题?
- 如何控制DataGrid中各列的对齐方式?在线等待!!!
- DataGrid中的DropDownList的事件触发问题
- 关于VS.net的使用问题(基础问题)
- 初学.net,下载了几个源码,不知怎么设置运行 {未能加载类型“bbs.Global”}。
- 急用,,我在叶面上弹出一个窗体,在里面操作后,怎么把得到的值在传到原来的叶面上去??
- 请问asp.net中有什么类是访问多维数据集的?
{
CheckBox read;
read=(CheckBox)e.Item.Cells[3].FindControl("chkRead");
if(read!=null)
{
if(e.Item.Cells[2].Text=="1")
read.Checked=true;
else
read.Checked=false;
}
}
select a.field1,a.field2,b.ptype,a.field3
from car as a inner join ctype as b on a.id = b.id
在页面上简单点可以用.Net 的 Html 代码 或动态帮定(我先试试,明天接上)
示例:在Northwind数据库中新建一表customer,如下字段:
customerID-主键,varchar;
company-varchar;
coutry-int (1代表China,2代表American,3代表Cannada)在edit.aspx页面写入代码: <form id="Form1" method="post" runat="server">
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="false" OnEditCommand="DataGrid1_Edit"
OnUpdateCommand="DataGrid1_Update" OnCancelCommand="DataGrid1_Cancel" DataKeyField="CustomerID">
<Columns>
<asp:EditCommandColumn EditText="edit" CancelText="cancel" UpdateText="update"></asp:EditCommandColumn>
<asp:BoundColumn DataField="CustomerID" ReadOnly="true" HeaderText="Customer"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Company">
<ItemTemplate>
<asp:Label Text='<%#DataBinder.Eval(Container.DataItem,"Company")%>' Runat="server" ID="Label1" NAME="Label1">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Text='<%#DataBinder.Eval(Container.DataItem,"Company")%>' Runat="server" ID="Textbox1" NAME="Textbox1">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Contry">
<ItemTemplate>
<asp:Label Text='<%#Change((int)DataBinder.Eval(Container.DataItem,"Country"))%>' Runat="server" ID="Label2" NAME="Label2">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList SelectedIndex='<%#DataBinder.Eval(Container.DataItem,"Country")%>' Runat="server" ID="Dropdownlist1" NAME="Dropdownlist1">
<asp:ListItem>China</asp:ListItem>
<asp:ListItem>American</asp:ListItem>
<asp:ListItem>Cannada</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="select">
<EditItemTemplate>
<asp:CheckBox id="CheckBox1" Runat="server"></asp:CheckBox>
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
BindData()-连接数据库,读取customer表的内容,绑定到DataGrid1;
Change()-将“Country”字段中的数字表示法翻译成字符串;
DataGrid1_Edit();
DataGrid1_Update();
DataGrid1_Cancel();如下所示:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
BindData();
} private void BindData()
{
SqlConnection conn=new SqlConnection ("server=localhost;database=Northwind;uid=sa;pwd=sa");
SqlDataAdapter adp=new SqlDataAdapter("select * from customer",conn);
DataSet ds=new DataSet ();
conn.Open ();
adp.Fill (ds,"customer");
conn.Close (); this.DataGrid1 .DataSource =ds.Tables ["customer"].DefaultView ;
this.DataGrid1 .DataBind ();
} public void DataGrid1_Edit(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex =(int)e.Item.ItemIndex ;
BindData(); }
public void DataGrid1_Update(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{ }
public void DataGrid1_Cancel(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex =-1;
BindData(); } public string Change(int i)
{
string str="NoDc";
if (i==1)
str= "China";
if(i==2)
str="American";
if(i==3)
str="Cannada"; return str;
}
如果你看懂了如上代码,可以自己试着写写Update()的函数;
如果你还有疑问,发邮件给我:[email protected];
还有另外一种编辑DataGrid的方法,就是把编辑按钮放在
DataGrid之外,如果你需要这种写法,也可以一并问我
先谢谢你!你说的那些我都可以实现。但是当按下编辑按钮时dropdownlist和checkbox里显示出来的值是数据库里的内容。接着就是进行编辑,之后再把编辑好的内容存进数据库to:monkeys(study.net)
ptype是ctype表里的主键,是car表里的外部键
而checkbox可以这样做:
<asp:checkbox selected='<%#ValidIsTrue(DataBinder.Eval(Container.DataItem,"sex"))%>'hou后台代码写入public bool VailidIsTrue(int i)
{
}//上面代码实现了从数据库读取sex的值,通过ValidIsTrue()函数转化为布尔值,来确定CheckBox的选定状态
你还有其他疑问吗?
其实我这里最想解决的是:
说明:dropdownlist绑定的是ctype表中的ctype字段。而他的当前被选择项(selecteditem)是根据car表中的ptype
字段值来决定的,两个字段是主键和外部键的关系。