ASP

本类阅读TOP10

·asp常用数据库连接方法和技巧
·无组件生成BMP验证码
·一些常用的辅助代码 (网络收藏)
·JavaScript实现的数据表格:冻结列、调整列宽和客户端排序
·VisualStudio.NET_2003及其 MSDN 下载地址
·ASP模拟MVC模式编程
·图片以二进制流输出到网页
·MD5加密算法 ASP版
·ASP.NET编程中的十大技巧
·改进 ASP 的字符串处理性能

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
To JavaScript Prompts for Buttons in Asp::DataGrid for Delete Column(ZT)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站



Look at the following code below. It has Delete column, which we use to delete items in the grid. But delete is so careful action, we require the javascript alert to confirm the delete operation.
<asp:DataGrid id="TestGrid" 
    style="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 40px"
    runat="server" Width="408px" Height="160px" Font-Size="X-Small"
    BorderColor="White" BorderStyle="Ridge" CellSpacing="1" BorderWidth="2px"
    BackColor="White" CellPadding="3" GridLines="None" AutoGenerateColumns="False">

   <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#9471DE">
   </SelectedItemStyle>
 
   <ItemStyle ForeColor="Black" BackColor="#DEDFDE">
   </ItemStyle>
 
   <HeaderStyle Font-Bold="True" ForeColor="#E7E7FF" BackColor="#4A3C8C">
   </HeaderStyle>
 
   <FooterStyle ForeColor="Black" BackColor="#C6C3C6">
   </FooterStyle>
 
   <Columns>
      <asp:BoundColumn DataField="ID"
            HeaderText="Number"></asp:BoundColumn>
      <asp:BoundColumn DataField="Name"
            HeaderText="Name"></asp:BoundColumn>
      <asp:BoundColumn DataField="Quantity"
            HeaderText="Qty"></asp:BoundColumn>
      <asp:BoundColumn DataField="Price"
            HeaderText="Price"></asp:BoundColumn>
      <asp:ButtonColumn Text="Delete" ButtonType="PushButton" 
            CommandName="Delete"></asp:ButtonColumn>
   </Columns>
 
   <PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="#C6C3C6">
   </PagerStyle>

</asp:DataGrid>

To add javascript prompt command on click of delete button we can not directly modify the DataGrid tag. And DataGrid does not provide any facility to add alert code. However there is way to add an attribute to the controls. This way is very costly for server as far as performance is concerned. The old method is as shown below.

Old Slow Method (Not Recommended):
private void InitializeComponent()
{
   TestGrid.ItemCreated += new DataGridItemEventHandler
                                  (TestGrid_ItemCreated);
}

void TestGrid_ItemCreated(object sender, DataGridItemEventArgs e)
{
   Button btn = (Button)e.Item.Cells[4].Controls[0];
   btn.Attributes.Add("onclick",
     "return confirm('are you sure you want to delete this')");
}

The above code is recommended by various ASP.NET books which is very slow on performance since server delivers 100s of aspx files and executing this ItemCreated
code executes for every rows in DataGrid. Just to add alert, I dont recommend to waste so much of cpu cycles of Server.

Why dont we apply some shortcut javascript code by having a bit of inside knowledge of how DataGrid items are rendered.

DataGrid items are rendered with Table tag in html you can see the source of output in the browser. And Delete button is replaced by INPUT tag with type submit and it contains name as shown below.
  <td><input type="submit" name="TestGrid:_ctl2:_ctl0" value="Delete" /></td>

As you can see above the name attribute of button starts with "TestGrid:".
So we can use this as guide and search all form elements and attach event of onclick in client browser and making server free from any code execution.

Just add following script and see replace TestGrid with name of Grid. This prompts user for the alert and if user cancels nothing happens.

Recommended:
<!-- Client Side JavaScript -->
<script language="javascript">
<!--
 
   function ondeleteclick()
   {
        return confirm("Are you sure you want to delete this?")
   }
 
   for(i=0;i<document.all.length;i++)
   {
       var x = document.all.item(i)
       if(x!=null && x.name !=null &&  x.name.indexOf("TestGrid")==0)
       {
           if(x.value=="Delete")
                x.onclick = ondeleteclick
           continue;
      }
 }
//-->
</script>

Reference Website: http://www.akashkava.com/articles/asp.net/datagrid/javascript-prompts.html




相关文章

相关软件