Dart.Powerweb.livecontrols应用

Dart.Powerweb.livecontrols是个非常不错利用javascript实现无刷新的控件集。
这个控件集的使用,大家可以参照他的帮助手册,

1. 如果我们想将LiveControls中的数据信息,取出来转移到webcontrols上去的话,我们必须在微软的webcontrols的html里面加入“LiveControlUpdate="true"”,这样livecontrol和webcontrol就可以实现互动了。
2. 因为LiveDataGrid中没有模版列,所以要实现在LiveDataGrid中添加入webcontrol的模版列。
html 代码:
<cc1:livedatagrid id="LiveDataGrid1" style="Z-INDEX: 109; LEFT: 128px; POSITION: absolute; TOP: 200px"
     runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False">
     <Columns>
      <cc1:LiveBoundColumn DataField="ProductID" SortExpression="ProductID" ReadOnly="True" HeaderText="ProductID"></cc1:LiveBoundColumn>
      <asp:TemplateColumn SortExpression="ProductName">
       <HeaderTemplate>
        <b>Product Name</b>
       </HeaderTemplate>
       <ItemTemplate>
        <asp:Label Text='<%# DataBinder.Eval(Container.DataItem, "ProductName").ToString().Trim() %>' runat="server" ID="Label3"/>
       </ItemTemplate>
       <EditItemTemplate>
        <asp:TextBox id="ProductName" runat="server" Width="100px" Text='<%# DataBinder.Eval(Container.DataItem, "ProductName") %>'>
        </asp:TextBox>
       </EditItemTemplate>
      </asp:TemplateColumn>
      <asp:TemplateColumn SortExpression="QuantityPerUnit">
       <HeaderTemplate>
        <b>Quantity PerUnit</b>
       </HeaderTemplate>
       <ItemTemplate>
        <asp:Label Text='<%# DataBinder.Eval(Container.DataItem, "QuantityPerUnit")%>' runat="server" ID="Label4"/>
       </ItemTemplate>
       <EditItemTemplate>
        <asp:TextBox id="QuantityPerUnit" runat="server" Width="100px" Text='<%# DataBinder.Eval(Container.DataItem, "QuantityPerUnit")%>'>
        </asp:TextBox>
       </EditItemTemplate>
      </asp:TemplateColumn>
      <asp:TemplateColumn SortExpression="UnitsInStock">
       <HeaderTemplate>
        <b>Units In Stock</b>
       </HeaderTemplate>
       <ItemTemplate>
        <asp:Label Text='<%# DataBinder.Eval(Container.DataItem, "UnitsInStock").ToString().Trim() %>' runat="server" ID="Label5"/>
       </ItemTemplate>
       <EditItemTemplate>
        <asp:TextBox id="UnitsInStock" runat="server" Width="100px" Text='<%# DataBinder.Eval(Container.DataItem, "UnitsInStock").ToString().Trim() %>'>
        </asp:TextBox>
       </EditItemTemplate>
      </asp:TemplateColumn>
      <cc1:LiveButtonColumn Text="Select" HeaderText="Select" CommandName="Select"></cc1:LiveButtonColumn>
      <cc1:LiveEditCommandColumn ButtonType="LinkButton" UpdateText="Update" CancelText="Cancel" EditText="Edit"></cc1:LiveEditCommandColumn>
      <cc1:LiveButtonColumn Text="Delete" CommandName="Delete"></cc1:LiveButtonColumn>
     </Columns>
    </cc1:livedatagrid>
后台代码:


if(!Page.IsPostBack)
   {
    this.bind("","");

    Session["tt"]="";
   }


  private void bind(string sortField, string sortDirection)
  {
   string sql="select * from Products";
   SqlConnection con = new SqlConnection("server=is-hezhou;uid=sa;pwd=sa;database=Northwind");
   
   if(sortField != "")
    sql+= " ORDER BY " + sortField;
   if(sortField != "" && sortDirection != "")
    sql+= " " + sortDirection;   
   
   
   SqlDataAdapter sda=new SqlDataAdapter(sql,con);
   DataSet ds=new DataSet();
   sda.Fill(ds);
   if(ds.Tables[0].Rows.Count==0)
   {
    return ;
   }
   else
   {
    this.LiveDataGrid1.DataSource=ds.Tables[0].DefaultView;
    this.LiveDataGrid1.DataBind();

   // this.DataGrid1.DataSource=ds.Tables[0].DefaultView;
   // this.DataGrid1.DataBind();
    
   }
   ds.Dispose();
   ds.Clear();
   sda.Dispose();
   con.Close();
   con.Dispose();
  }
private void DoCommand(string cmdText)
  {
   string connectionString = "server=is-hezhou;uid=sa;pwd=sa;database=Northwind";
   SqlConnection connection = new SqlConnection(connectionString);
   connection.Open();
   SqlCommand command = new SqlCommand(cmdText, connection);
   command.ExecuteNonQuery();
   connection.Close();
  }
  private void LiveDataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   LiveDataGrid1.EditItemIndex = -1;
   this.bind("","");
  }

  private void LiveDataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  { string key = e.Item.Cells[0].Text;
   DoCommand("delete Products where ProductID = " + key);
   this.bind("","");
  }

  private void LiveDataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   this.LiveDataGrid1.EditItemIndex=e.Item.ItemIndex;
   this.bind("","");
   ((TextBox)this.LiveDataGrid1.Items[e.Item.ItemIndex].Cells[1].FindControl("ProductName")).BorderStyle=BorderStyle.Double;
   ((TextBox)this.LiveDataGrid1.Items[e.Item.ItemIndex].Cells[2].FindControl("QuantityPerUnit")).BorderStyle=BorderStyle.Dashed;
   ((TextBox)this.LiveDataGrid1.Items[e.Item.ItemIndex].Cells[3].FindControl("UnitsInStock")).BorderStyle=BorderStyle.Dotted;
  }

  private void LiveDataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
  {
   LiveDataGrid1.CurrentPageIndex = e.NewPageIndex;
   this.bind("", "");

  }

  private void LiveDataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
  {
    this.bind(e.SortExpression, "asc"); 
  }

  private void LiveDataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   // Get the new values from the controls
   string key = e.Item.Cells[0].Text;
   string prodName = ((TextBox)this.LiveDataGrid1.Items[e.Item.ItemIndex].Cells[1].FindControl("ProductName")).Text;
   string quantity = ((TextBox)this.LiveDataGrid1.Items[e.Item.ItemIndex].Cells[2].FindControl("QuantityPerUnit")).Text;
   string units = ((TextBox)this.LiveDataGrid1.Items[e.Item.ItemIndex].Cells[3].FindControl("UnitsInStock")).Text;

   // Run the query
   DoCommand("UPDATE Products Set ProductName = '" + prodName + "', QuantityPerUnit = '" + quantity + "', UnitsInStock = '" + units + "' WHERE ProductID = " + key);

   // Reset the EditItemIndex
   LiveDataGrid1.EditItemIndex = -1;

   // Rebind the grid to display the new values
   this.bind("", "");

  }

  private void LiveDataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   if(e.CommandName=="Select")
   {
    this.LiveTextBox1.Text=e.Item.Cells[2].Text.ToString();
   }
  }

posted on 2005-07-19 15:23  zz  阅读(338)  评论(0编辑  收藏  举报

导航