请高手请教一个DataGrid的问题!(高分)

bin_bin 2003-08-04 10:48:12
如何在摸版列中控制按扭的显示和隐藏?
如何触发该按扭的事件???
...全文
37 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bin_bin 2003-08-05
  • 打赏
  • 举报
回复
小弟还有一个问题,
我想每次按一下删除按钮(放在datagrid的模板列里),然后弹出messagebox,提示确认删除,然后按确定按钮,则触发我编写的后台代码.
Sub DataGrid_ItemCreated(ByVal Sender As Object, ByVal e As DataGridItemEventArgs) Handles DgComment.ItemCreated
Select Case e.Item.ItemType
Case ListItemType.Item, ListItemType.AlternatingItem, ListItemType.EditItem
Dim myDeleteButton As Button
myDeleteButton = e.Item.FindControl("BtnDelete")
myDeleteButton.Attributes.Add("onclick", "return confirm('是否确定要删除该评论,对该用户来说将损失其名望值?');")
End Select
End Sub <-- 可以实现的,即每个按钮按下都会弹出,但小弟不知其机理,ItemCreate是什么?还有为什么要加Select case ,e.Item.FindControl("BtnDelete")为什么没有cells,因为我还没有指明第几列?

Sub DataGrid_ItemCommand(ByVal sender As Object, ByVal e As DataGridCommandEventArgs) Handles DgComment.ItemCommand <--按钮按下去之后的后台代码,但它更本不执行!为什么,请高手指教,还有一种方法是在前台(apss
If e.CommandName = "DeleteComment" Then
Dim conn As New Connection.DataBase()
Dim str As String
Dim CommentID As String
CommentID = e.Item.Cells(1).Text.Trim.ToString
str = "DeleteComment '" + CommentID + "'"
conn.NoQuery(str)
conn.Dispose()

Dim record As String
record = "删除文章作者为" + LblAuthor.Text.Trim + ",文章名为" + LblArticleTitle.Text.Trim + "的评论"
RecordAction(Session("Nick"), record)

End If
End Sub
shixueli 2003-08-04
  • 打赏
  • 举报
回复
直接把那个模板列隐藏了
bin_bin 2003-08-04
  • 打赏
  • 举报
回复
编写ItemDataBound事件是否是如下所写:?
Public Function DataGrid_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs) Handles DgComment.ItemDataBound

但为何系统显示“他们不具备相同的签名”?
该如何修改???
bin_bin 2003-08-04
  • 打赏
  • 举报
回复
我要做的是在页面初始化的时候就能判断按扭的显示或隐藏。
而且由于放在摸版列中,每个按扭的隐藏和显示都一样,不会出现一个按扭显示,另一个按扭隐藏的情况。
该如何做?
11097082 2003-08-04
  • 打赏
  • 举报
回复
显示和隐藏DataGrid中的列
要显示和隐藏DataGrid中的列,最关键的是AutoGenerateColumns设置为False:下面就是实现这一功能的aspx代码和脚本代码:

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="ShowHideCols.aspx.vb"
Inherits="aspxWeb.ShowHideCols"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD html 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>ShowHideCols</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Button ID="btnShow" Text="Show Details" OnClick="ShowDetails" Runat="server" />
<asp:Button ID="btnHide" Text="Hide Details" OnClick="HideDetails" Runat="server" />
<asp:DataGrid ID="dtgCusts" Runat="server" AutoGenerateColumns="False"
BorderColor="#999999" BorderStyle="None" BorderWidth="1px" BackColor="White"
CellPadding="3" GridLines="Vertical">
<Columns>
<asp:BoundColumn DataField="Title" />
<asp:BoundColumn DataField="id" Visible="False" />
<asp:BoundColumn DataField="CreateDate" DataFormatString="{0:yyyy-MM-dd HH:mm:ss}"
Visible="False" />
<asp:EditCommandColumn EditText="Edit" HeaderText="Edit" Visible="False" />
</Columns>
<AlternatingItemStyle BackColor="#DCDCDC" />
<ItemStyle ForeColor="Black" BackColor="#EEEEEE" />
<headerStyle Font-Bold="True" ForeColor="White" BackColor="#000084" />
</asp:DataGrid>
</form>
</body>
</HTML>

后代码脚本

Imports System.Data
Imports System.Data.OleDb

Public Class ShowHideCols
Inherits System.Web.UI.Page
Protected WithEvents btnShow As System.Web.UI.WebControls.Button
Protected WithEvents btnHide As System.Web.UI.WebControls.Button
Protected WithEvents dtgCusts As System.Web.UI.WebControls.DataGrid

#Region " Web 窗体设计器生成的代码 "

'该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles MyBase.Load
'在此处放置初始化页的用户代码
btnShow.Text = "显示列"
btnHide.Text = "隐藏列"
dtgCusts.Columns(1).HeaderText = ""
dtgCusts.Columns(0).HeaderText = "标题"
dtgCusts.Columns(2).HeaderText = "发布日期"
dtgCusts.Columns(3).HeaderText = "编辑"
If Not IsPostBack Then
BindTheData()
End If
End Sub

Sub BindTheData()
Dim objConn As OleDbConnection
Dim objCmd As OleDbCommand
objConn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
+ Server.MapPath("Test.mdb"))
Dim strSql As String
strSql = "SELECT Top 10 id,Title,CreateDate FROM Document"
objCmd = New OleDbCommand(strSql, objConn)
objConn.Open()
dtgCusts.DataSource = objCmd.ExecuteReader()
dtgCusts.DataBind()
objConn.Close()
objConn.Dispose()
End Sub
Sub ShowDetails(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim intCounter As Integer
For intCounter = 1 To dtgCusts.Columns.Count - 1
dtgCusts.Columns(intCounter).Visible = True
Next
End Sub

Sub HideDetails(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim intCounter As Integer
For intCounter = 1 To dtgCusts.Columns.Count - 1
dtgCusts.Columns(intCounter).Visible = False
Next
End Sub

End Class

wangin8181 2003-08-04
  • 打赏
  • 举报
回复
触发该按钮的事件,其实很简单,设置此按钮的CommandName属性,如为"Edit",然后在DataGrid的ItemCommand事件中写入:
if (e.CommandName == "Edit")
{
//你需要执行的操作
}
就可以了.
wangin8181 2003-08-04
  • 打赏
  • 举报
回复
在DataGrid的ItemDataBound事件中,写:
((ImageButton)(e.Item.Cell[x].FindControl(控件名))).Visible = false;
就可以了.至于如果在其他地方写,你就自己看看吧.
saucer 2003-08-04
  • 打赏
  • 举报
回复
>>>如何在摸版列中控制按扭的显示和隐藏?

set the button's Visible property


try


<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="c#" runat="server">
void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlDataAdapter da = new SqlDataAdapter("select * from authors",
"server=(local);database=pubs;uid=sa;pwd=;");
DataSet ds = new DataSet();
da.Fill(ds,"authors");

Grid1.DataSource = ds.Tables["authors"];
Grid1.DataBind();
}
}

void ShowButton(object sender, EventArgs e)
{
object o = ViewState["ShowButton"];
bool bShow = true;
if (o != null)
bShow = (bool)o;

bShow = !bShow;

foreach (DataGridItem dgi in Grid1.Items)
{
Button btn = (Button)dgi.FindControl("btn");
btn.Visible = bShow;
}

ViewState["ShowButton"] = bShow;
}

void Grid1_ItemCommand(Object sender, DataGridCommandEventArgs e)
{
Response.Write("***" + ((Button)e.CommandSource).CommandName + "*****<BR>");
Response.Write("***" + e.Item.ItemIndex + "*****<BR>");
}


</script>
<html>
<body>
<form runat=server>
<asp:DataGrid id="Grid1" runat="server" AutoGenerateColumns="false"
OnItemCommand="Grid1_ItemCommand"
>
<Columns>
<asp:TemplateColumn HeaderText="Test Button">
<ItemTemplate>
<asp:Button id=btn runat=server Text='<%# DataBinder.Eval(Container.DataItem,"au_lname") %>' CommandName="AnotherButton"
Visible='<%#DataBinder.Eval(Container.DataItem,"au_lname").ToString() != "White" %> '
/>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Author Name">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"au_fname") %> <%# DataBinder.Eval(Container.DataItem,"au_lname") %>
</ItemTemplate>
</asp:TemplateColumn>


</Columns>
</asp:DataGrid>
<asp:Button id="btnSubmit" runat="server" Text="Show/Hide" Onclick="ShowButton" />
</form>
</body>
</html>
eattiger 2003-08-04
  • 打赏
  • 举报
回复
关注中
xu0007 2003-08-04
  • 打赏
  • 举报
回复
<ItemTemplate> <asp:Button Text="设置" Width="50" Font-Underline="False" CommandName="set" ID="lnkListSchool" Runat="server"></asp:Button>
</ItemTemplate>
点击这个button之后触发ItemCommand这个事件,它的事件处理函数的格式可以这么写:
(setRightGrid是一个DataGrid)
private void setRightGrid_ItemCommand(object sender, DataGridCommandEventArgs e)
{
if(e.CommandName=="set")
{
ViewState["bId"]=int.Parse(setRightGrid.DataKeys[e.Item.ItemIndex].ToString());

DataSet ds=new DataSet();
ds=GetFullControlBoard(int.Parse(Session["GrpId"].ToString()));
lblBoard.Text=ds.Tables[0].Rows[e.Item.ItemIndex]["board_name"].ToString();
if(pnlSchool.Visible==true)
pnlSchool.Visible=false;
else pnlSchool.Visible=true;
//pnlSchool.Visible=true;
SchoolDataBinder();
}
}

获得点击的是那一行按钮可以用e.Item.ItemIndex属性,
获得响应的主键是setRightGrid.DataKeys方法


DataGrid属性生成器里可以设置该列是否显示
  • 打赏
  • 举报
回复
<%if 条件 then %>
....
<%else%>
....
<%end if%>
Fortune2k1 2003-08-04
  • 打赏
  • 举报
回复
dim btn1 as button=ctype(datagrid.items(i).findcontrol(BUTTON_ID),button)
多了New.
Fortune2k1 2003-08-04
  • 打赏
  • 举报
回复
dim btn1 as new button=ctype(datagrid.items(i).findcontrol(BUTTON_ID),button)
btn1.visible=false.
这里的i是第几行.

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧