detailsview 在编辑的时候使用dropdownlist

ASP.NET DetailsView 控件详解

public partial class _Default : System.Web.UI.Page 
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!this.IsPostBack)
        
{
            bindData();
        }

    }

    
public void bindData()
    
{
        
string strSql = ConfigurationManager.AppSettings["strcon"].ToString();
        SqlConnection con 
= new SqlConnection(strSql);
        SqlCommand cmd 
= new SqlCommand("select * from test where id =2",con);
        con.Open();
        SqlDataReader read 
= cmd.ExecuteReader();
        DetailsView1.DataSource
=read;
        DetailsView1.DataBind();
        DropDownList drpsex 
= DetailsView1.FindControl("drpsex"as DropDownList;
        Label lblsex 
= DetailsView1.FindControl("lblsex"as Label;
        
//SqlDataReader reader = bindToDrop();
        
//drpsex.DataSource = reader;
        
//drpsex.DataBind();
        
//drpsex.SelectedIndex = drpsex.Items.IndexOf(drpsex.Items.FindByText(lblsex.Text.Trim())); //lblsex.Text.Trim();
        
    }

    
protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
    
{
        
//if (e.CommandName.Equals("Edit"))//实现一
        
//{
        
//    DetailsView1.ChangeMode(DetailsViewMode.Edit);
           
        
//}
       
        
//bindData();
    }

    
protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)
    
{
        
//DetailsView1.ChangeMode(DetailsViewMode.Edit);
        
//bindData();
        
//实现二
        if (DetailsView1.CurrentMode == DetailsViewMode.ReadOnly)
        
{
            DetailsView1.ChangeMode(DetailsViewMode.Edit);
        }

        
else if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
        
{
            DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
        }

        bindData();
        
    }


    
public SqlDataReader bindToDrop()
    
{
        
string strSql = ConfigurationManager.AppSettings["strcon"].ToString();
        SqlConnection con 
= new SqlConnection(strSql);
        SqlCommand cmd 
= new SqlCommand("select distinct sex from test", con);
        con.Open();
        SqlDataReader read 
= cmd.ExecuteReader();
        
return read;
    }


    
protected void DetailsView1_ModeChanged(object sender, EventArgs e)
    
{
       
    }

    
protected void DetailsView1_DataBound(object sender, EventArgs e)
    
{
        
    }

    
protected void DetailsView1_PreRender(object sender, EventArgs e)
    
{
        
//实现dropdownlist 在编辑的时候显示一样的值
        if (this.IsPostBack)
        
{
            
if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
            
{
                DropDownList drpsex 
= DetailsView1.FindControl("drpsex"as DropDownList;
                Label lblsex 
= DetailsView1.FindControl("lblsex"as Label;
                drpsex.DataSource 
= bindToDrop();
                drpsex.DataBind();
                drpsex.SelectedValue 
= lblsex.Text.Trim();
            }

        }

    }

}


==============================================================================================
前台
 
<form id="form1" runat="server">
    
<div>
        
<asp:DetailsView ID="DetailsView1" runat="server"  AutoGenerateRows="False"  Height="50px" Width="125px" OnItemCommand="DetailsView1_ItemCommand" OnModeChanging="DetailsView1_ModeChanging" OnModeChanged="DetailsView1_ModeChanged" OnDataBound="DetailsView1_DataBound" OnPreRender="DetailsView1_PreRender">
            
<Fields>
                
<asp:TemplateField HeaderText="Name">
                    
<EditItemTemplate>
                        
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("name") %>'></asp:TextBox>
                    
</EditItemTemplate>
                    
<InsertItemTemplate>
                        
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("name") %>'></asp:TextBox>
                    
</InsertItemTemplate>
                    
<ItemTemplate>
                        
<asp:Label ID="Label1" runat="server" Text='<%# Bind("name") %>'></asp:Label>
                    
</ItemTemplate>
                
</asp:TemplateField>
                
<asp:TemplateField HeaderText="Sex">
                    
<EditItemTemplate>
                         
<asp:DropDownList ID="drpsex" runat="server" DataSource="<%# bindToDrop() %>"  DataTextField="sex"></asp:DropDownList>
                    
</EditItemTemplate>
                    
<InsertItemTemplate>
                        
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("sex") %>'></asp:TextBox>
                    
</InsertItemTemplate>
                    
<ItemTemplate>
                        
<asp:Label ID="Label2" runat="server" Text='<%# Bind("sex") %>'></asp:Label>
                       
                    
</ItemTemplate>
                
</asp:TemplateField>
                
<asp:TemplateField>
                   
<ItemTemplate>
                      
<asp:Label ID="lblsex" runat="server" Text='<%# Bind("sex") %>'></asp:Label>
                   
</ItemTemplate>
                
</asp:TemplateField>
                
<asp:TemplateField ShowHeader="False">
                    
<EditItemTemplate>
                        
<asp:Button ID="Button1" runat="server" CausesValidation="True" CommandName="Update"
                            Text
="更新" />&nbsp;<asp:Button ID="Button2" runat="server" CausesValidation="False"
                                CommandName
="Cancel" Text="取消" />
                    
</EditItemTemplate>
                    
<ItemTemplate>
                        
<asp:Button ID="Button1" runat="server" CausesValidation="False" CommandName="Edit"
                            Text
="编辑" />
                    
</ItemTemplate>
                
</asp:TemplateField>
            
</Fields>
        
</asp:DetailsView>
    
    
</div>
    
</form>
 
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值