<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>

解决方案 »

  1.   

    private void dg_allprocess_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    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;
    }
    }
      

  2.   

    谢谢programmeraaron,但是还是没有解决我的问题。
      

  3.   

    对表:car,ctype 假定以id相对应
    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 代码 或动态帮定(我先试试,明天接上)
      

  4.   

    你的意思是不是这样的,希望我没有理解错car表里有一个字段对应ctype表里面的ptype字段???但car里保存的是ptype的编号现在,你需要将编号对文字显示????
      

  5.   

    这样解决:
    示例:在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>
      

  6.   

    后台代码定义如下几个函数:
    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;
    }
      

  7.   

    DataGrid1_Update()的内容我还没有定义,
    如果你看懂了如上代码,可以自己试着写写Update()的函数;
    如果你还有疑问,发邮件给我:[email protected]
    还有另外一种编辑DataGrid的方法,就是把编辑按钮放在
    DataGrid之外,如果你需要这种写法,也可以一并问我
      

  8.   

    to:openid(aishg)
    先谢谢你!你说的那些我都可以实现。但是当按下编辑按钮时dropdownlist和checkbox里显示出来的值是数据库里的内容。接着就是进行编辑,之后再把编辑好的内容存进数据库to:monkeys(study.net)
    ptype是ctype表里的主键,是car表里的外部键
      

  9.   

    是啊,我上面写的方法实现了当点击编辑按钮时,dropdownlist显示的是数据库的值,
    而checkbox可以这样做:
    <asp:checkbox selected='<%#ValidIsTrue(DataBinder.Eval(Container.DataItem,"sex"))%>'hou后台代码写入public bool VailidIsTrue(int i)
    {
        
    }//上面代码实现了从数据库读取sex的值,通过ValidIsTrue()函数转化为布尔值,来确定CheckBox的选定状态
    你还有其他疑问吗?
      

  10.   

    真的很谢谢openid(aishg)!
    其实我这里最想解决的是:
    说明:dropdownlist绑定的是ctype表中的ctype字段。而他的当前被选择项(selecteditem)是根据car表中的ptype
    字段值来决定的,两个字段是主键和外部键的关系。