gpt4 book ai didi

asp.net - 从 GridView 创建打印,其中每条记录都位于单独的页面上

转载 作者:行者123 更新时间:2023-12-02 16:24:29 24 4
gpt4 key购买 nike

不知道从哪里开始处理我收到的这个请求。我已将数据从 gridview 导出到 Excel 和 Word。将 CSS 样式表传递给两者,从 GridView 创建各种打印。这让我很难从哪里开始。最初我认为我可以从 GridView 的选定行创建单独的数据表并生成可打印的报告。

基本上这就是我需要做的。我有一个显示一些记录的 GridView 。用户需要通过复选框选择他们想要打印的任何行并选择打印按钮。按下按钮后,弹出窗口将一次一页显示每条记录的详细信息。

这是 GridView :

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
BackColor="White" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px"
CellPadding="5" CellSpacing="1"
DataSourceID="SqlDataSource1" ForeColor="Black" GridLines="Vertical" AllowSorting="True">
<FooterStyle BackColor="#CCCCCC" />
<Columns>

<asp:TemplateField HeaderText="Process">
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkSelect" />
<asp:HiddenField ID="hdnPkey" Value='<%# Bind("Pkey") %>' runat="server" />
</ItemTemplate>
<HeaderTemplate>
<input id="chkAll" onclick="javascript:SelectAllCheckboxes(this, 'chkSelect');" runat="server" type="checkbox" />
</HeaderTemplate>
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>


<asp:BoundField DataField="CreatedBy" HeaderText="Requestor" SortExpression="CreatedBy">
<HeaderStyle HorizontalAlign="left" />
<ItemStyle HorizontalAlign="left" />
</asp:BoundField>

<asp:BoundField DataField="Office" HeaderText="Office" SortExpression="Office">
<HeaderStyle HorizontalAlign="center" />
<ItemStyle HorizontalAlign="center" />
</asp:BoundField>

<asp:BoundField DataField="DeptCode" HeaderText="Department" SortExpression="DeptCode">
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>

<asp:BoundField DataField="ZoneName" HeaderText="Zone" SortExpression="ZoneName">
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>

<asp:BoundField DataField="EffectiveDate" HeaderText="Effective Date" DataFormatString = "{0:d}" SortExpression="EffectiveDate">
<HeaderStyle HorizontalAlign="center" />
<ItemStyle HorizontalAlign="center" />
</asp:BoundField>

</Columns>
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="Silver" Font-Bold="True" ForeColor="Black" />
<AlternatingRowStyle BackColor="#CCCCCC" />
</asp:GridView>

* 这是我用来验证以确保选中复选框的客户端 JavaScript。我无法弄清楚如何捕获隐藏字段中的主键并构建一个字符串,其中每个主键值用逗号分隔。我打算获取该字符串并弹出一个新窗口来检索数据。

<小时/>
    function fcnValidateCheckBoxes() {

var isValid = false;
var gridView = document.getElementById("<%=GridView1.ClientID %>");
var MyPkeyString = ""

for (var i = 1; i < gridView.rows.length; i++) {
var inputs = gridView.rows[i].getElementsByTagName('input');
if (inputs != null) {
if (inputs[0].type == "checkbox") {
if (inputs[0].checked) {
isValid = true;
return true;
}
}
}
}


if (isValid == "true") {
***** Not sure what goes here to build the string of primary keyes. **
} else {
alert("You must select at least one checkbox");
return false;
}
}

最佳答案

有很多方法可以获取隐藏字段的值。由于您已经有了循环,因此我决定添加几行来获取带有选中复选框的每行的主键。我假设隐藏字段是复选框之后的下一个输入字段:

var primaryKeys = '';
for (var i = 1; i < gridView.rows.length; i++) {
var inputs = gridView.rows[i].getElementsByTagName('input');
if (inputs != null) {
if (inputs[0].type == "checkbox") {
if (inputs[0].checked) {
if(inputs.length > 1 && inputs[1].type == "hidden")
{
primaryKeys += inputs[1].value + ';';
}
}
}
}
}

现在您有了一个由分号分隔的所有相关主键的列表,您只需将其传递到下一页即可。我不确定您想如何执行此操作(您只说您想要一个弹出窗口),因此这里有一个使用 window.open 和 GET 请求的快速示例:

window.open('Print.aspx?ids=' + encodeURIComponent(primaryKeys));

并在后面的代码中:

string params = Request.Querystring("ids");
string[] ids = params.split(';');

关于asp.net - 从 GridView 创建打印,其中每条记录都位于单独的页面上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16991794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com