Datalist选择和编辑数据

<form runat="server">

  <ASP:DataList id="MyDataList" runat="server"
       CellSpacing = "2"
       SelectedItemStyle-BackColor="red"
       SelectedItemStyle-ForeColor="white"
       EditItemStyle-BackColor="yellow"
       EditItemStyle-ForeColor="black"
       DataKeyField="ISBN"//调用datalist的DataKeys("索引")将返回该索引行的ISBN栏的值
       OnItemCommand="DoItemSelect"//以下四个按钮都会触发该事件,故需要commandname来区别不同按钮
       OnEditCommand="DoItemEdit"
       OnUpdateCommand="DoItemUpdate"
       OnDeleteCommand="DoItemDelete"
       OnCancelCommand="DoItemCancel">

    <HeaderTemplate>
      <b>Some Wrox Press Books:</b><br />
    </HeaderTemplate>

    <ItemTemplate>
      //定义CommandName="Select",点击后将会使点击行呈现为SelectedItemTemplate定义内容
      <ASP:Button CommandName="Select" Text="Info" runat="server" />
      <%# DataBinder.Eval(Container.DataItem, "Title") %>
    </ItemTemplate>

    <SelectedItemTemplate>
      Title: <b><%# DataBinder.Eval(Container.DataItem, "Title") %></b><br />
     //定义CommandName="Edit" ,点击后将会使点击行呈现为EditItemTemplate定义内容
     //以及触发EditCommand事件(以及ItemCommand事件)
      <ASP:Button CommandName="Edit" Text="Edit" runat="server" />
      ISBN: <%# DataBinder.Eval(Container.DataItem, "ISBN") %> &nbsp;
      Published:
      <%# DataBinder.Eval(Container.DataItem, "PublicationDate", "{0:D}") %>
    </SelectedItemTemplate>

    <EditItemTemplate>
      <b>ISBN: <%# DataBinder.Eval(Container.DataItem, "ISBN") %></b> &nbsp;
      //定义了三个button的CommandName不同属性
       //CommandName="Update" 点击触发UpdateCommand事件(以及ItemCommand事件)
      <ASP:Button CommandName="Update" Text="Update" runat="server" />
       //CommandName="Delete"点击触发DeleteCommand事件(以及ItemCommand事件)
      <ASP:Button CommandName="Delete" Text="Delete" runat="server" />
     //CommandName="Cancel"点击触发CancelCommand事件(以及ItemCommand事件)
      <ASP:Button CommandName="Cancel" Text="Cancel" runat="server" /><br />
      Title:
      <ASP:TextBox id="txtTitle" Text='<%# DataBinder.Eval(Container.DataItem, "Title") %>'
                   size="46" runat="server" /><br />
      PublicationDate:
      <ASP:TextBox id="txtPubDate" size="20" runat="server"
                   Text='<%# DataBinder.Eval(Container.DataItem, "PublicationDate") %>'/>
    </EditItemTemplate>

  </ASP:DataList>

</form>
脚本:
<script language="C#" runat="server">

 void Page_Load(Object sender, EventArgs e)
 {
  if (!Page.IsPostBack)
   BindDataGrid();  // create data set and bind to list control
 }

       //此事件函数四个按钮都会触发
 void DoItemSelect(Object objSource, DataListCommandEventArgs objArgs )
 {
  lblSQL.Text = "";  // clear any content from SQL statement Label

  // see if it was the Select button that was clicked
                 //判断是否为Info按钮(通过比较commandname属性)
  if (objArgs.CommandName == "Select")
  {
   // set the SelectedIndex property of the list to this item// s index
   MyDataList.SelectedIndex = objArgs.Item.ItemIndex;
   BindDataGrid();  // bind the data and display it
  }
 }


 void DoItemEdit(Object objSource, DataListCommandEventArgs objArgs)
 {
  // set the SelectedIndex property of the list to -1 to "unselect" it
  MyDataList.SelectedIndex = -1;

  // set the EditItemIndex property of the list to this item's index
  MyDataList.EditItemIndex = objArgs.Item.ItemIndex;
  BindDataGrid();  // bind the data and display it
 }


 void DoItemUpdate(Object objSource, DataListCommandEventArgs objArgs)
 {
  // get a reference to the title and publication date text boxes
  TextBox objTitleCtrl = (TextBox)objArgs.Item.FindControl("txtTitle");
  TextBox objPubDateCtrl = (TextBox)objArgs.Item.FindControl("txtPubDate");
  
  // create a suitable SQL statement and execute it
  string strSQL = "UPDATE Booklist SET Title='" + objTitleCtrl.Text + "', "
       + "PublicationDate='" + objPubDateCtrl.Text + "' "
       + "WHERE ISBN='" + MyDataList.DataKeys[objArgs.Item.ItemIndex] + "'";
  ExecuteSQLStatement(strSQL);

  // set EditItemIndex property of grid to -1 to switch out of Edit mode
  MyDataList.EditItemIndex = -1;
  BindDataGrid();  // bind the data and display it
 }
 

 void DoItemDelete(Object objSource, DataListCommandEventArgs objArgs)
 {
  // create a suitable SQL statement and execute it
  string strSQL = "DELETE FROM Booklist WHERE ISBN='"
      + MyDataList.DataKeys[objArgs.Item.ItemIndex] + "'";
  ExecuteSQLStatement(strSQL);

  // set EditItemIndex property of grid to -1 to switch out of Edit mode
  MyDataList.EditItemIndex = -1;
  BindDataGrid();  // bind the data and display it
 }


 void DoItemCancel(Object objSource, DataListCommandEventArgs objArgs)
 {
  // set EditItemIndex property of grid to -1 to switch out of Edit mode
  MyDataList.EditItemIndex = -1;
  BindDataGrid();  // bind the data and display it
 }


 void ExecuteSQLStatement(string strSQL)
 {
  // this is where the SQL statement would be executed against the
  // original data source. In this example, we're simply displaying
  // the statement in a Label on the page
  lblSQL.Text = "<b>The SQL statement that would be executed is:</b><br />" + strSQL;
 }


 void BindDataGrid()
 {
  // get connection string from ../global/connect-strings.ascx user control
  string strConnect = ctlConnectStrings.OLEDBConnectionString;
               
           
  // create a SQL statement to select some rows from the database
  string strSelect = "SELECT * FROM BookList WHERE ISBN LIKE '%18610025%'";

  // create a variable to hold an instance of a DataReader object
  OleDbDataReader objDataReader;

  try
  {
   // create a new Connection object using the connection string
   OleDbConnection objConnect = new OleDbConnection(strConnect);

   // open the connection to the database
   objConnect.Open();

   // create a new Command using the connection object and select statement
   OleDbCommand objCommand = new OleDbCommand(strSelect, objConnect);

   // execute the SQL statement against the command to get the DataReader
   objDataReader = objCommand.ExecuteReader();
  }
  catch (Exception objError)
  {
   // display error details
   outError.InnerHtml = "<b>* Error while accessing data</b>.<br />"
        + objError.Message + "<br />" + objError.Source + "<p />";
   return;  //  and stop execution
  }

  // set the DataSource property and bind the list
  MyDataList.DataSource = objDataReader;
  MyDataList.DataBind();
 }

</script>

小结:默认下通过设置asp:button的commandname属性为Edit,Update,Delete,Cancel来激发EditCommand,UpdateCommand,
DeleteCommand和CancelCommand事件。
当然这些button也会触发ItemCommand事件。
注:若要在初始时直接进入编辑模式去掉选中状态,可以这样:
 <ItemTemplate>
      //定义CommandName="Edit",点击后将会使点击行呈现为EditItemTemplate定义内容
      <ASP:Button CommandName="Edit" Text="Edit" runat="server" />
      <%# DataBinder.Eval(Container.DataItem, "Title") %>
    </ItemTemplate>
除去 <SelectedItemTemplate>的定义和ItemCommand事件和处理函数的定义

### Dataroom 自助数据集概述 Dataroom 是一种用于数据分析报告的强大工具,允许用户通过简单易用的界面创建、管理使用自助数据集。自助数据集使业务分析师技术人员能够快速访问所需的数据资源并执行复杂的分析操作。 #### 支持的数据源种类 该平台支持多种主流关系型数据库作为数据源,包括 MySQL、PostgreSQL、Oracle、ClickHouse SQLServer 数据库接入[^1]。这使得不同背景的企业都能方便地连接到自己的数据仓库或事务处理系统。 #### 功能特性 除了广泛的支持外,此工具还提供了丰富的功能来增强用户体验支持更深入的数据探索: - **SQL 查询**:可以直接编写标准 SQL 来提取特定需求下的精确数据。 - **拖放界面**:对于不熟悉编程的人来说,图形化的交互方式可以简化复杂任务的操作流程。 - **自定义仪表板**:可以根据个人偏好定制视图布局,以便更好地展示重要指标。 - **数据钻取**:可以从汇总级别逐步细化查看底层细节信息。 - **实时数据更新**:确保所见即是最新的情况反映。 - **数据导出**:轻松分享成果给其他同事或者保存副本供离线查阅。 - **多数据源集成**:实现跨多个存储位置的一致性连贯性[^2]。 #### 创建自助数据集的方法 要开始构建一个新的自助数据集,通常遵循如下模式(注意这里并未采用步骤描述的方式): 当启动新项目时,在界面上会提示选择目标数据源类型;之后输入必要的认证参数完成链接配置。接着进入设计阶段——在这里可以通过直观的选择字段建立查询条件或是直接键入完整的语句获取想要的结果集。最后一步则是命名并保存新建的数据集合实例。 ```sql SELECT column_name(s) FROM table_name WHERE condition; ``` 上述代码片段展示了基本 SELECT 语法结构,实际应用中可能涉及 JOINs 或者聚合函数等高级特性的运用。 #### 管理已有的自助数据集 一旦建立了初始版本后,后续维护工作主要包括但不限于调整现有查询逻辑以适应变化的需求、优化性能表现以及定期审查权限设置保障信息安全等方面。这些活动都可以借助内置的功能模块高效开展而无需每次都重新编码整个过程。 #### 使用自助数据集进行分析 利用已经准备好的数据集来进行进一步的研究变得异常简便。无论是生成静态报表还是动态可视化图表,亦或者是实施机器学习算法训练模型预测未来趋势,都能够在统一平台上顺利完成。而且由于所有组件都是紧密相连的整体解决方案的一部分,因此切换上下文的成本极低,极大地提高了工作效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值