gridview 相关问题

Gridview是用于显示和操作来自各种数据源的数据的控件。

Yii2 gridview 三表连接

我是 yii2 框架的新人,当我尝试连接两个以上的表时,它没有在 gridview 中加载。 我正在尝试从语言表中获取语言名称,我可以通过用户语言表获取该名称

回答 2 投票 0

ASP Grid View,预定义行高大小

我有一个带有两个动态列的 Asp Gridview。一列将显示一组字符(描述),另一列用于显示图像。 我只是想限制这个描述网格行嘿...

回答 3 投票 0

如何制作一个单元格大小变化的响应式GridView()?

我想创建一个响应式 GridView() 但我发现的几乎所有内容都讨论了实现此目的的方法,其中涉及调整网格的行和列中的单元格数量。这不是我想要的...

回答 1 投票 0

Yii2:动态模型属性

我有表郎: 编号 |语言名称 表 2:消息: 编号 |消息代码 表3:词典 身份证号 |消息 ID |语言 ID |翻译 我想把语言带入gridview。格式:

回答 2 投票 0

带有 2 个参数的 ASP.NET Gridview 超链接不起作用

我有一个asp.net gridview,我想要在其中查看选项。根据 SAPID 和 CandidateID,它应该重定向到相应的页面。但是在传递这两个参数时,我无法使用

回答 1 投票 0

维护 Yii2 GridView 页面更改上的 Bootstrap 选项卡

我有一个页面有 5 个引导选项卡。当我在任何选项卡上更改寻呼机时,都会移动到第一个选项卡。 如何激活用于更改寻呼机的选项卡。 整个页面有 5 个 dataProvider。埃克...

回答 1 投票 0

WPF:扩展ListView的GridView的最后一列

我有一个 ListView 和一个 3 列的 GridView。我希望最后一列占据 ListView 的剩余宽度。

回答 8 投票 0

JavaFX GridView 如何获取可见元素的 id

我正在尝试获取填充有图像的 GridView 当前可见单元格/行索引。 我找到了从侦听器中取出 id 的方法,但是当我开始在 ...

回答 1 投票 0

Yii 在提交按钮后不保存可编辑网格

不幸的是,这个解决方案不会将编辑后的数据保存在网格上,我可以提供一些帮助吗? 查看名称:admin 型号名称: 时间表 控制器名称:TimesheetController 提前致谢。 看法 <...

回答 1 投票 0

搜索不起作用,SQL 查询无法替换 GridView 数据

这是aspx代码 这是aspx代码 <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:Conn %>" SelectCommand="SELECT [Client_tbl].[client_fullname],[Ticket_tbl].[client_phone],[Client_tbl].[client_email],[Client_tbl].[client_company],[Client_tbl].[client_id_num],[Client_tbl].[client_tax_num],[Ticket_tbl].[ticket_category],[Ticket_tbl].[ticket_shortdetails],[Ticket_tbl].[ticket_details],[Ticket_tbl].[user_fullname],[Ticket_tbl].[user_branch],[ticket_date] FROM [Ticket_tbl] INNER JOIN [Client_tbl] ON [Ticket_tbl].[client_phone] = [Client_tbl].[client_phone] ORDER BY [Ticket_tbl].[ticket_id] DESC"></asp:SqlDataSource> <asp:GridView ID="GridView3" runat="server" class="table table-bordered table-striped" AutoGenerateColumns="False" DataSourceID="SqlDataSource3" AllowPaging="true" PageSize="10" OnSelectedIndexChanged="GridView3_SelectedIndexChanged"></asp:GridView>` 这是aspx.cs protected void SearchButton1_Click(object sender, EventArgs e) { if (SearchTextBox1.Text != "" || SearchTextBox1.Text != null) { try { SqlConnection Conn = new SqlConnection(strcon); if (Conn.State == ConnectionState.Closed) { Conn.Open(); } SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM User_tbl WHERE (user_name LIKE'%" + SearchTextBox1.Text.Trim() + "%' or user_fullname LIKE'%" + SearchTextBox1.Text.Trim() + "%' or user_branch LIKE'%" + SearchTextBox1.Text.Trim() + "%')", Conn); DataSet ds = new DataSet(); da.Fill(ds); GridView1.DataSourceID = ""; GridView1.DataSource = ds; GridView1.DataBind(); Conn.Close(); } catch (Exception ex) { Response.Write("<script>alert('" + ex.Message + "');</script>"); } } else { Response.Write("<script>alert('من فضلك ادخل كلمة للبحث');</script>"); } } 该代码适用于数据条目很少且没有分页的两个页面。 什么不起作用: 页面加载并且gridview显示数据,搜索不会更新gridview的数据 一般的方法是,一旦您开始想要“花哨”的功能,例如数据分页和过滤? 这正是您想要在标记中删除 SqlDataSource 对象的使用的同一时刻。换句话说,当您不需要过滤之类的东西时,它们是一种快速且简单的解决方案。 当您想要通过 GridView 的代码控制来实现特殊功能(例如 GridView 数据源的过滤和代码控制)时? 正是在这一点上,我强烈建议您转储并删除标记中 SqlDataSoruce 对象的使用,并使用后面的代码来驱动 GridView。 事实上,在标记中使用 SqlDataSource 意味着您实际上无法控制 Gridview 何时更新,甚至无法加载 - 因为它对您来说都是自动“魔法”的。因此,仅在标记中使用 SqlDataSource 对象即可实现最简单的设置。优点是它们丑陋、混乱、难以使用,并且正如您的问题所示,它们不太适合您然后想要用后面的代码控制 GridView 数据。 因此,考虑到上述内容,现在让我们设置 GridView 以允许您进行过滤。 因此,从标记中删除 SqlDataSource,并删除 GridView 标记中的 SqlDataSource 设置。 所以,假设我们有一个 GridView 和 2 个搜索文本框(一个用于酒店名称,一个用于城市)。当然,两者都是可选的过滤方式。 因此,我们现在有了这个标记: <div style="float: left"> <h3>Search For Hotel</h3> <asp:TextBox ID="txtHotel" runat="server"> </asp:TextBox> </div> <div style="float: left; margin-left: 35px"> <h3>Search For City</h3> <asp:TextBox ID="txtCity" runat="server"> </asp:TextBox> </div> <div style="float: left; margin-left: 35px"> <br /> <br /> <asp:Button ID="cmdSearch" runat="server" Text="Search" CssClass="btn" OnClick="cmdSearch_Click" /> </div> <div style="clear: both"></div> <br /> <asp:GridView ID="GVHotels" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" CssClass="table table-hover"> <Columns> <asp:BoundField DataField="FirstName" HeaderText="FirstName" /> <asp:BoundField DataField="LastName" HeaderText="LastName" /> <asp:BoundField DataField="City" HeaderText="City" /> <asp:BoundField DataField="HotelName" HeaderText="HotelName" /> <asp:BoundField DataField="Description" HeaderText="Description" /> <asp:TemplateField HeaderText="Active" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:CheckBox ID="chkActive" runat="server" OnCheckedChanged="chkActive_CheckedChanged" AutoPostBack="true" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> 现在我们的代码是这样的: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) LoadGrid(); } void LoadGrid() { string strWhere = ""; SqlCommand cmdSQL = new SqlCommand(); if (txtHotel.Text != "") { strWhere = "(HotelName like @Hotel + '%')"; cmdSQL.Parameters.Add("@Hotel",SqlDbType.NVarChar).Value = txtHotel.Text; } if (txtCity.Text != "") { if (strWhere != "") strWhere += " AND "; strWhere += "(City like @City + '%')"; cmdSQL.Parameters.Add("@City", SqlDbType.NVarChar).Value=txtCity.Text; } if (strWhere != "") strWhere = $" WHERE {strWhere}"; cmdSQL.CommandText = $"SELECT * FROM tblHotelsA {strWhere} ORDER BY HotelName"; GVHotels.DataSource = General.MyRstP(cmdSQL); GVHotels.DataBind(); } 因此: 我们可以选择按城市过滤,这样说: 总结: 示例代码是 SQL 注入安全的。您永远不想将用户输入连接到 SQL 字符串中,因为这是不安全的代码并且容易受到 SQL 注入攻击。 示例代码在标记中未使用 SqlDataSource。这允许代码隐藏控制 GridView 加载。如果您让 ASP.NET 在标记中使用 SqlDataSource 自动加载 GridView,那么您无法控制 GridView 何时重新加载,甚至何时刷新数据。

回答 1 投票 0

如何将自定义 HTML 放入 Yii2 GridView 标题中?

引导程序中有这个标签,它会自动显示缩写词的弹出窗口。我想将此标签插入到带有属性 nam 的 gridview 中的某个标头...

回答 3 投票 0

如何更改GridView的列名称

con = new OleDbConnection(@"Provider=Microsoft.JET.OLEDB.4.0;数据源=|DataDirectory|\database.mdb"); com = new OleDbCommand("从测试中选择 *", con); con.Open(); OleDbDataReader 阅读器; 重新...

回答 1 投票 0

使用存储过程绑定gridview

我有gridview,我在后端使用了存储过程。问题是我没有使用任何文本框或标签,仅使用 gridview。 当我运行代码时,它显示 spproduct1 预期的编译错误

回答 5 投票 0

更改Widget(RemoteViews)中GridView中的numColumns没有效果

我有一个带有 GridView 的小部件(可以使用),它以 1 或更多列/行显示信息。 我想以编程方式设置列数,因为用户应该选择。如果我设置

回答 4 投票 0

无法在 yii2 中正确查看弹出模式

我试图在单击按钮时显示弹出模式。但是,当我单击该按钮时,它会显示一小段时间,然后消失,使屏幕变黑。 下面是我的代码 我试图在单击按钮时显示弹出模式。但是当我点击按钮时,它会显示一小会儿,然后消失,屏幕变黑。 下面是我的代码 <?PHP use kartik\select2\Select2; use yii\helpers\Html; use yii\helpers\Url; use yii\widgets\Pjax; use kartik\export\ExportMenu; use kartik\grid\GridView; /* @var $this yii\web\View */ /* @var $searchModel app\models\InstallationsSearch */ /* @var $dataProvider yii\data\ActiveDataProvider */ $this->title = 'Installations'; $this->params['breadcrumbs'][] = $this->title; ?> <section class="content-header"> <h1><?= Html::encode($this->title) ?></h1> </section> <section class="content"> <div class="box"> <div class="box-body"> <div id="statusMsg" > <?= Yii::$app->session->getFlash('no');?> <?= Yii::$app->session->getFlash('error');?> <?= Yii::$app->session->getFlash('success');?> <?= Yii::$app->session->getFlash('errors');?> </div> <div class="built" style="overflow: hidden; overflow-y: hidden; height: ?"> <?php $gridColumns =[ [ 'class'=>'kartik\grid\SerialColumn', ], [ 'class' => 'kartik\grid\ActionColumn', 'template' => '{view} {update} {delete}', 'buttons' => [ 'delete' => function ($url, $model) { return Html::a('<span class="glyphicon glyphicon-trash"></span>', '#', [ 'class' => 'kv-row-select', 'data-id' => $model->id, 'data-toggle' => 'modal', 'data-target' => '#deleteModal', 'data-confirm' => false, // Disable built-in confirmation 'data-method' => false, // Disable data-method attribute to avoid default delete behavior ]); }, ], ], 'meter_msn', 'old_ref_no', [ 'attribute' => 'm_sub_div', 'value' => function ($d) { if(is_object($d->subdiv)) return $d->subdiv->name; return ' - '; }, 'filter' => Select2::widget([ 'model' => $searchModel, 'attribute' => 'm_sub_div', 'data' => \common\models\SurveyHescoSubdivision::toArrayList(), 'options' => ['placeholder' => 'Sub-Div'], 'pluginOptions' => [ 'allowClear' => true, ], ]), ], 'consumer_name', 'consumer_address', [ 'label' => 'Meter Installation Location', 'value' => function($model){ return $model['latitude'] . ' , ' . $model['longitude']; } ], 'mount_material', [ 'label' => 'AMR Inst. Date', 'value' => function ($model) { return date("d-m-Y", strtotime($model->sync_date)); }, ], [ 'label' => 'Install Status', 'value' => function ($d) { return $d->istallation_status; }, 'filter' => Html::activeDropDownList($searchModel, 'istallation_status', \app\models\Installations::getInstallStatus(), ['prompt' => "Install Status", 'class' => 'form-control']), ], [ 'label' => 'Meter Type', 'value' => function ($d) { if(is_object($d)) return $d->meter_type; return ' - '; }, 'filter' => Html::activeDropDownList($searchModel, 'meter_type', \app\models\Meters::getMeterTypeValues(), ['prompt' => "Meter Type", 'class' => 'form-control']), ], 'electrician_name', [ 'attribute' => 'created_by', 'value' => function ($model) { if(is_object($model->user)){ return $model->user->username; } return ''; }, 'filter' => Select2::widget([ 'model' => $searchModel, 'attribute' => 'created_by', 'data' => \app\models\User::toArrayList(), 'options' => ['placeholder' => 'Select a User'], 'pluginOptions' => [ 'allowClear' => true, ], ]), ], ]; echo ExportMenu::widget([ 'dataProvider' => $dataProvider, 'columns' => $gridColumns, 'dropdownOptions' => [ 'label' => 'Export All', 'class' => 'btn btn-info', ], 'exportConfig' => [ ExportMenu::FORMAT_PDF => false, ExportMenu::FORMAT_TEXT => false, ExportMenu::FORMAT_HTML => false, ExportMenu::FORMAT_CSV => false, ], 'filename' => 'LESCO_Installation_Data_' . date('d-M-yy') ]); echo GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => $gridColumns, ]); ?> </div> </div> </div> </section> <!-- Delete Confirmation Modal --> <div id="deleteModal" class="modal fade" tabindex="-1" role="dialog" data-backdrop="static" data-keyboard="false"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Delete Confirmation</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> <p>Are you sure you want to delete this item?</p> <form id="deleteForm" method="post" action="<?= Url::to(['installations/delete']) ?>"> <input type="hidden" name="_csrf" value="<?= Yii::$app->request->csrfToken ?>"> <input type="hidden" id="delete-id" name="id"> <div class="form-group"> <label for="delete-reason">Reason for deletion:</label> <textarea class="form-control" id="delete-reason" name="delete_reason" required></textarea> </div> <input type="hidden" name="deleted_by" value="<?= Yii::$app->user->identity->id ?>"> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button> <button type="button" id="submitDelete" class="btn btn-danger">Delete</button> </div> </div> </div> </div> <?PHP $script = <<< JS function initializeModalEvents() { $('.kv-row-select').off('click').on('click', function() { console.log('Delete button clicked'); var id = $(this).data('id'); $('#delete-id').val(id); $('#deleteModal').modal('show'); console.log('Modal shown with ID: ' + id); }); $('#submitDelete').off('click').on('click', function(event) { event.preventDefault(); var form = $('#deleteForm'); var reason = $('#delete-reason').val().trim(); if (reason === '') { alert('Reason for deletion is mandatory.'); return false; } console.log('Submitting form'); $.ajax({ url: form.attr('action'), type: 'post', data: form.serialize(), success: function(response) { console.log('Form submitted successfully'); if (response.success) { $('#deleteModal').modal('hide'); $.pjax.reload({container:'#w0-pjax'}); } else { alert('An error occurred while deleting the item.'); } }, error: function() { console.log('Form submission error'); alert('An error occurred while deleting the item.'); } }); }); } $(document).ready(function() { setTimeout(function() { $('#statusMsg').fadeOut('fast'); }, 5000); // <-- time in milliseconds initializeModalEvents(); $(document).on('pjax:success', function() { initializeModalEvents(); }); }); JS; $this->registerJs($script); ?> 图形用户界面 如上图所示,弹出窗口显示了很短的时间,然后关闭。 我已尝试尽可能解决此问题,但我陷入困境。 我怎样才能实现它? 任何帮助将不胜感激。 $('#deleteModal').modal('show'); 删除它,因为“data-toggle”已经默认引导脚本js打开模式。

回答 1 投票 0

Dart/Flutter - 用 1 个或多个小部件换行到下一行

我有 4 个固定大小的小部件,如果父宽度变小,我想将它们包装起来 当我尝试时,固定小部件的大小开始改变或者它们之间的空间很大,1个小部件的正常包裹小部件......

回答 1 投票 0

如何在c#/asp.net中更改gridview行颜色

我想根据网格视图单元格或列值更改网格视图行/单元格背景颜色。 我有一个 gridview asp.net (WebForms),其中一列包含数量 (int)。取决于这个值,ev...

回答 2 投票 0

从 Gridview 单击按钮时更新面板 UI 未更新

当从网格视图中单击链接按钮时,我的更新面板的 UI 不会更新。我要更新的 Updatepanel 不在 gridview 内。这是我的代码: 当从网格视图中单击链接按钮时,我的更新面板的 UI 不会更新。我要更新的 Updatepanel 不在 gridview 内。这是我的代码: <asp:ScriptManager EnablePartialRendering="true" ID="ScriptManager1" runat="server"> </asp:ScriptManager> //<asp:GridView ID="attendanceGv" runat="server" CssClass="table table-striped table-bordered" AutoGenerateColumns="False" ShowHeader="False" OnRowDataBound="GridViewRowEventHandler" > // I tried this with regular onlick but it did not work. <asp:GridView ID="attendanceGv" runat="server" CssClass="table table-striped table-bordered" AutoGenerateColumns="False" ShowHeader="False" OnRowDataBound="GridViewRowEventHandler" OnRowCommand="GridView1_RowCommand"> <Columns> <asp:BoundField DataField="Field1" SortExpression="Field1" ItemStyle-Width="8%" /> <asp:TemplateField> <ItemTemplate> // <asp:LinkButton ID="expandLBtn" runat="server" OnClick="expandLBtn_Click"><i class="fa-solid fa-arrow-right"> </i></asp:LinkButton> // I tried this with the onclick command and trigger. (Also without the trigger) <asp:LinkButton ID="expandLBtn" runat="server" CommandName="UpdateTextBox" CommandArgument='<%# Eval("nyeis_id") %>' ><i class="fa-solid fa-arrow-right"> </i></asp:LinkButton> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false"> <ContentTemplate> <div class="row "> <div class=" col-12"> <asp:Label ID="Label2" CssClass="form-control" runat="server" Text="test1" Style="text-align: center;" Font-Bold="True" ></asp:Label> </div> </div> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="attendanceGv" EventName="RowCommand" /> // without this trigger, i kept getting regular post back. With this trigger I get Async but the UI does not update. //<%-- <asp:AsyncPostBackTrigger ControlID="expandLBtn" EventName="Click" />--%> // tried this with the regular click event. </Triggers> </asp:UpdatePanel> C#:这是我使用 onclick 时所做的 protected void expandLBtn_Click(object sender, EventArgs e) { GridViewRow row = (GridViewRow)((LinkButton)sender).NamingContainer; HtmlControl FlagAttendanceDetailsCol = (HtmlControl)attendanceDetailsCol.FindControl("attendanceDetailsCol"); UpdatePanel FlagUpdatePanel2 = (UpdatePanel)FlagAttendanceDetailsCol.FindControl("UpdatePanel2"); System.Web.UI.WebControls.Label FlagLabel2 = (System.Web.UI.WebControls.Label)FlagUpdatePanel2.FindControl("Label3"); FlagLabel2.Text="test"; Label2.Text = "New value2"; UpdatePanel2.Update(); } C#:这是我在使用 GridViewCommandEventArgs 时尝试的 if (e.CommandName == "UpdateTextBox") { int rowIndex = Convert.ToInt32(e.CommandArgument); LinkButton FlagExpandLBtn = attendanceGv.Rows[rowIndex].FindControl("expandLBtn") as System.Web.UI.WebControls.LinkButton; ScriptManager1.RegisterAsyncPostBackControl(FlagExpandLBtn); // Here, you can retrieve the data associated with the row that contains the clicked button and // perform any necessary data operations. System.Web.UI.WebControls.Label txtBox2 = UpdatePanel2.FindControl("Label2") as System.Web.UI.WebControls.Label; System.Web.UI.WebControls.Label txtBox3 = UpdatePanel2.FindControl("Label3") as System.Web.UI.WebControls.Label; if (txtBox2 != null) { txtBox2.Text = "test2"; // call the Update method on the UpdatePanel // Label2.Text = "New value"; // Update the TextBox in the other UpdatePanel. attendanceDetailsCol.Visible = true; } if (txtBox3 != null) { txtBox3.Text = "test3"; // call the Update method on the UpdatePanel // Label3.Text = "New value"; // Update the TextBox in the other UpdatePanel. attendanceDetailsCol.Visible = true; } string test = Label2.Text; string test2 = Label3.Text; UpdatePanel2.Update(); } 我尝试调试,没有收到任何错误,在进入 updatepanel2.update 部分之前,文本框显示它已更改,但它从未在 UI 中显示。 编辑:这可以工作! 问题当然是按钮和 gv 位于 up 的外部。 作为“正常”规则,您可以让页面上的任何按钮触发更新面板。 但是,在网格视图内部?不,因为更新面板需要这个: <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" CssClass="table" Width="60%" ShowHeaderWhenEmpty="true"> <Columns> <asp:BoundField DataField="FirstName" HeaderText="FirstName" HtmlEncode="false" /> <asp:BoundField DataField="LastName" HeaderText="LastName" HtmlEncode="false" /> <asp:BoundField DataField="HotelName" HeaderText="HotelName" /> <asp:BoundField DataField="City" HeaderText="City" /> <asp:BoundField DataField="Province" HeaderText="Province" /> <asp:BoundField DataField="Description" HeaderText="Description" /> <asp:TemplateField> <ItemTemplate> <asp:Button ID="Button1" runat="server" Text="This row" OnClick="Button1_Click" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <ContentTemplate> <h3>Inside up <%= DateTime.Now.ToString() %></h3> Row click = <asp:TextBox ID="txtRowClick" runat="server"></asp:TextBox> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button1" EventName="onclick" /> </Triggers> </asp:UpdatePanel> 注意 ControlID 的设置。好吧,如果触发按钮不在 gv 内部,那就可以了。 有多种方法,但如果你的GV只有那个按钮,还是其他几个按钮? 然后您可以将整个 GridView 定义为触发器。 然后这就会起作用: <Triggers> <asp:AsyncPostBackTrigger ControlID="Gridview1" /> </Triggers> 所以,你说触发器是整个GV,而你没有指定事件。 所以,下一期,发帖者没有明确说明链接按钮点击是否有效? 以下是解决方案: 另一条可能的路 将 GV 也放入更新面板中。 当您执行此操作时,该页面上的所有面板都将发布到服务器。因此,理论上,您所需要的只是 GV 中的一个工作按钮。如果您将 GV 放置在同一个更新面板中,甚至是单独的更新面板中,那么这将再次起作用,因为默认情况下所有更新面板都会发布回服务器。结果是后面的代码可以使用、修改任何这些控件中的任何控件。 但是,下面的叙述仍然有帮助,因为我经常看到链接按钮不起作用,下面解释了此问题的解决方法: 首先,尝试转储命令名称的使用。 只需为expandLBtn按钮添加一个onclick事件(它是一个链接按钮,但你仍然可以有一个onclick事件)。 因此,按钮(链接按钮)将如下所示: <ItemTemplate> <asp:LinkButton ID="expandLBtn" runat="server" CommandArgument='<%# Eval("nyeis_id") %>' OnClick="expandLBtn_Click" > <i class="fa-solid fa-arrow-right"></i></asp:LinkButton> </ItemTemplate> 但是,还有一个大问题: 由于某种原因,我发现如果您为引导图标添加“span”或“i”(或者在您的情况下为 Font Awesome),则当放置整个 GridView (或 ListView)时,单击事件开始不起作用更新面板内部。 我无法确定为什么会这样。 (但是,带有图标的跨度的存在是失败的原因。 那么,要验证以上内容吗?尝试使用普通按钮(同样不带命令名称,但您可以自由使用命令参数)。 事实上,首先尝试在没有 commandName 的情况下 - 以及链接按钮的指定单击事件。 如上所述,甚至您现有的链接按钮?删除跨度或“i”,删除 commandName,保留命令参数,然后使用该单击事件 + 命名容器来选取当前行单击。 当您嵌套多个 gv,然后将整个交易放入更新面板时,我往往只会看到此错误/问题。 所以,如果您发现链接按钮可以工作(没有图标),那么: 你必须采用一个按钮 - 我只是没有更好的答案。 您还可以使用图像按钮(大概还有一个图标)。 您还可以说出您拥有的 1 个或 2 个图标吗? 前往: https://fontawesome.com/search?s=solid&f=sharp&o=r 现在,选择图标,您就有机会将该图标下载为“图像”(SVG) 文件。 然后您可以像这样设置常规按钮的样式: <style type="text/css"> .bEdit { border: 1px solid #563d7c; border-radius: 5px; color: white; padding: 5px 10px 5px 25px; background: url(Content/Icons/pencil-square.svg) left 3px top 5px no-repeat skyblue; } </style> 然后你的按钮就变成这样了: <asp:Button ID="cmdEdit3" runat="server" Text="Edit" CssClass="btn bEdit" OnClick="cmdEdit3_Click" /> 如果您想要按钮中的图标+文本,请使用上面的内容。 如果您只想/需要按钮中的图标? 然后当然使用基于该 SVG 的图像按钮。 这样说: <asp:ImageButton ID="cmdDelete" runat="server" CssClass="btn btn-default" ImageUrl="~/Content/Icons/trash.svg" /> 因此,上述更好的选择取决于您是否只需要图标,或图标+文本。 如果您只需要图标?然后使用图像按钮 + SVG 图标。 这里建议的解决方案: 仅当您有嵌套的 GridView(或 ListView)时才需要。 仅当整个混乱都在更新面板中时才需要。 如果您没有将该 GridView 嵌套在另一个 GridView 中,那么一切都会正常工作,并且实际上无需更新面板即可正常工作。 我能体验到什么? 插入图标的“span”或“i”是导致失败的原因。您可以作为测试保留现有代码,并删除图标,然后查看按钮是否适合您。 (很可能会)。 所以,要么: 采用普通按钮+样式表来显示SVG图标。 (如果您需要/想要图标+文本,请执行此操作) 采用图像按钮,指定图像 - 这同样可以工作。 (这个建议是当你只想要图标时)。 但是,由于您当前的示例在 GridView 中没有嵌套的 GridView? 然后对该链接按钮使用普通的单击事件应该可以工作。 (删除命令名称)。

回答 1 投票 0

使用中继器问题/问题时使用 GridView EventHandler

我想在 GridView 渲染之前运行一些代码,理想情况下,尽管我可以在 RowCreated 或 RowDataBound 事件中执行此操作。 我的问题是我正在使用

回答 1 投票 0

如何在按钮单击时绑定gridview,因为空网格在回发时绑定

我已经使用gridview,并且根据某些条件在运行时删除列,并且在按钮单击事件上我通过填充数据表来绑定gridview,但它显示为空...

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.