zoukankan      html  css  js  c++  java
  • GridView实现单选(Single Selection)

    一直很想写一个Gridview内实现单选功能,但是一直没有太多时间,近段时间多个网友问及此功能,只好抽出些少时间来实现,下面为实现过程。

    效果如下,把选择的值使用javascript Alert:

    数据源,在可用的数据库内创建一个表[Member] 并插入三笔测试记录:

    View Code
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    IF OBJECT_ID ('[dbo].[Member]'IS NOT NULL
    DROP TABLE [dbo].[Member]

    GO

    CREATE TABLE [dbo].[Member](
        
    [MemberId] [int] IDENTITY(1,1NOT NULL,
        
    [Name] [nvarchar](50NULL,
        
    [Email] [nvarchar](100NULL,
     
    CONSTRAINT [PK__Member__0CF04B187F60ED59] PRIMARY KEY CLUSTERED 
    (
        
    [MemberId] ASC
    )
    WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ONON [PRIMARY]
    ON [PRIMARY]

    GO
    INSERT INTO [dbo].[Member] ([Name],[Email]VALUES ('John','john@it.com')
    INSERT INTO [dbo].[Member] ([Name],[Email]VALUES ('Jeny','Jeny@it.com')
    INSERT INTO [dbo].[Member] ([Name],[Email]VALUES ('Mike','Mike@it.com')

    存过程:

    View Code
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    IF OBJECT_ID ('[dbo].[usp_GetMember]'IS NOT NULL
    DROP PROCEDURE [dbo].[usp_GetMember]
    GO

    CREATE PROCEDURE [dbo].[usp_GetMember]
    AS
    SELECT [MemberId],[Name],[Email] FROM [dbo].[Member]
    GO

    Member.cs 类别:

    View Code
    sing System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Web;

    /// <summary>
    /// Summary description for Member
    /// </summary>
    namespace Insus.NET
    {
        
    public class Member
        {
            BusinessBase objBusinessBase 
    = new BusinessBase();

            
    public Member()
            {
                
    //
                
    // TODO: Add constructor logic here
                
    //
            }

            
    public DataTable GetMember()
            {
                
    return objBusinessBase.GetDataToDataSet("usp_GetMember").Tables[0];
            }
        }
    }

    GridviewSingleSelection.aspx:

    View Code
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridviewSingleSelection.aspx.cs"
        Inherits
    ="GridviewSingleSelection" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        
    <title></title>
    </head>
    <body>
        
    <form id="form1" runat="server">
        
    <asp:ScriptManager ID="ScriptManager1" runat="server">
        
    </asp:ScriptManager>
        
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            
    <ContentTemplate>
                
    <div>
                    
    <asp:Button ID="ButtonSingleSelect" runat="server" Text="GetGridViewRasioSelectedValue" OnClick="ButtonSingleSelect_Click" />
                    
    </>
                    
    <!--Insus.NET:GridView有一个事件OnRowDataBound -->
                    
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound">
                        
    <Columns>
                            
    <asp:TemplateField HeaderText="选择">
                                
    <HeaderStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemTemplate>
                                   
    <!--Insus.NET:这里是重点部分,使用Literal控件装载HtmlInputRadioButton -->
                                    
    <asp:Literal ID="Literal1" runat="server"></asp:Literal>
                                
    </ItemTemplate>
                            
    </asp:TemplateField>
                            
    <asp:TemplateField HeaderText="ID">
                                
    <HeaderStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemTemplate>
                                    
    <%Eval("MemberId"%>
                                
    </ItemTemplate>
                            
    </asp:TemplateField>
                            
    <asp:TemplateField HeaderText="Name">
                                
    <HeaderStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemTemplate>
                                    
    <%Eval("Name"%>
                                
    </ItemTemplate>
                            
    </asp:TemplateField>
                            
    <asp:TemplateField HeaderText="Email">
                                
    <HeaderStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemStyle BorderWidth="1" BorderColor="#c0c0c0" />
                                
    <ItemTemplate>
                                    
    <%Eval("Email"%>
                                
    </ItemTemplate>
                            
    </asp:TemplateField>
                        
    </Columns>
                    
    </asp:GridView>
                
    </div>
            
    </ContentTemplate>
        
    </asp:UpdatePanel>
        
    </form>
    </body>
    </html>

    GridviewSingleSelection.aspx.cs:

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Insus.NET;  //Insus.NET:要引用名称空间

    public partial class GridviewSingleSelection : System.Web.UI.Page
    {
        
    //Insus.NET: new Member一个实例
        Member objMember = new Member();

        
    protected void Page_Load(object sender, EventArgs e)
        {
            Data_Binding();
        }

        
    private void Data_Binding()
        {
            
    this.GridView1.DataSource = objMember.GetMember();
            
    this.GridView1.DataBind();

        }
        
    protected void ButtonSingleSelect_Click(object sender, EventArgs e)
        {
           
    //Insus.NET: 判断用户是否有选择,如果没有选择return
            if (Request.Form["InsusRadio1"== nullreturn;

            
    //Insus.NET: 把选择的值存到ViewState,你可以把它存任何可以保留的变量中,呵呵
            ViewState["SelectedValue"]= Request.Form["InsusRadio1"].ToString();    
            
    //Insus.NET: 下面类别,你可以从Insus.NET博客中下载
            InsusJsUtility objJs = new InsusJsUtility();

            objJs.JsAlert(ViewState[
    "SelectedValue"].ToString());
        }

        
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            
    if (e.Row.RowType == DataControlRowType.DataRow)
            {
               
    //Insus.NET: 判断Literal控件是否存在,如果没有写此判断,程式有可能在找不到时抛出异常
                if (e.Row.FindControl("Literal1"!= null)
                {
                    
    //Insus.NET:找到了,把对象转为控件。
                    Literal literal = (Literal)e.Row.FindControl("Literal1");

                    
    //Insus.NET: 下面这个是把表主键的值赋给变量value。如果你想取GridView的索引,可以使用e.Row.RowIndex.ToString()
                    string value = DataBinder.Eval(e.Row.DataItem, "MemberId").ToString(); //e.Row.RowIndex.ToString();

                    
    //Insus.NET: 把HtmlInputRadioButton绑定至Literal控件上。
                    literal.Text = "<input id=\"InsusRadio1\" type=\"radio\" name=\"InsusRadio1\" value=\"" + value + "\" />";
                }
            }
        }
    }

    好了,时间问题不再作过多讲解,如还有问题,请联系Insus.NET,程序重点部分有详细的注解。

  • 相关阅读:
    EXTJS 4.2 资料 控件之checkboxgroup的用法(静态数据)
    EXTJS 4.2 资料 控件之Window窗体相关属性的用法
    EXTJS 4.2 资料 控件之textfield文本框加事件的用法
    Entity Framework 学习笔记(一)之数据模型 数据库
    EXTJS 4.2 资料 控件之checkboxgroup的用法(动态数据)
    EXTJS 4.2 资料 控件之Grid 列鼠标悬停提示
    Entity Framework 学习笔记(二)之数据模型 Model 使用过程
    EXTJS 4.2 资料 控件之radiogroup 的用法
    EXTJS API
    vue移动端弹框组件,vue-layer-mobile
  • 原文地址:https://www.cnblogs.com/insus/p/2029383.html
Copyright © 2011-2022 走看看