我需要遍历我的asp.net网页中的所有控件并对控件执行某些操作.在一个例子中,我正在从页面中创建一个巨大的字符串并通过电子邮件发送给自己,在另一个例子中,我将所有内容保存到cookie中.
问题是masterpages和包含控件集合的项目.我希望能够将一个Page传递给该方法,然后让该方法具有足够的通用性,以循环遍历最内层内容页面中的所有控件并使用它们.我尝试用递归来做这个,但我的递归是不完整的.
我想将一个Page对象传递给一个方法,并让该方法循环遍历最里面的内容页面中的所有控件.我怎样才能做到这一点?
private static String controlToString(Control control)
{
StringBuilder result = new StringBuilder();
String controlID = String.Empty;
Type type = null;
foreach (Control c in control.Controls)
{
try
{
controlID = c.ID.ToString();
if (c is IEditableTextControl)
{
result.Append(controlID + ": " + ((IEditableTextControl)c).Text);
result.Append("<br />");
}
else if (c is ICheckBoxControl)
{
result.Append(controlID + ": " + ((ICheckBoxControl)c).Checked);
result.Append("<br />");
}
else if (c is ListControl)
{
result.Append(controlID + ": " + ((ListControl)c).SelectedValue);
result.Append("<br />");
}
else if (c.HasControls()) …Run Code Online (Sandbox Code Playgroud) 我的地址数据存储在 sql server 2000 数据库中,我需要提取给定客户代码的所有地址。问题是,有很多地址拼写错误,有些地址缺失,等等。所以我需要以某种方式清理它。我需要剔除错误的拼写、缺失的部分等,并得出“平均”记录。例如,如果 New York 在 5 条记录中有 4 条拼写正确,则应该是返回的值。
我无法修改数据,在输入时验证它,或者类似的事情。我只能修改数据的副本,或者通过查询对其进行操作。
我在这里得到了部分答案SQL server 中存储的地址有很多小的变化(错误),但我需要允许每个代码有多个有效地址。
样本数据
代码名称 地址1 地址2 城市 州 邮政编码 使用时间 10003 AMERICAN NUTRITON INC 2183 BALL STREET OLDEN Utah 87401 177 10003 美国营养公司 2183 BALL STREET PO BOX 1504 OLDEN Utah 87402 76 10003 美国营养公司 2183 BALL STREET OLDEN Utah 87402 24 10003 美国营养公司 2183 BALL STREET PO BOX 1504 OLDEN Utah 87402 17 10003 Samantha Brooks 506 S. Main Street Ellensburg Washington 98296 …
我编写了一个程序,从Crystal Report生成PDF,然后将这些PDF通过电子邮件发送给某人.该程序在我的开发机器上运行良好,但是当我将bin\Release目录复制到Windows 2000 Server(我想运行它的机器)时,它开始运行然后生成此错误和堆栈跟踪:
The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' threw an exception.
at CrystalDecisions.CrystalReports.Engine.ReportDocument..ctor()
at DailyJobCostSummaryEmail.Program.crptToPDF(String reportFile, String jobNum, String outputLocation) in M:\Projects\DailyJobCostSummaryEmail\DailyJobCostSummaryEmail\Program.cs:line 79
at DailyJobCostSummaryEmail.Program.Main(String[] args) in M:\Projects\DailyJobCostSummaryEmail\DailyJobCostSummaryEmail\Program.cs:line 46
Run Code Online (Sandbox Code Playgroud)
除了从可视工作室运行外,其他任何地方都会出现错误.
.Net 2.0安装在那台机器上,我已经安装了CRRedist2005_x86.msi而没有任何效果.我甚至得到了"向Microsoft发送错误报告"对话框,即使我正在使用try/catch将异常打印到文件中.即使执行了catch块,我的程序也无法正常关闭.
static void Main(string[] args)
{
try
{
String dir = @"JobCostReports";
DataTable jobs = new DataTable();
using (SqlConnection conn = new SqlConnection(connString))
{
String sql = "JC_GetJobsClosedYesterday";
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(jobs);
}
List<String> files = new List<String>();
foreach (DataRow row in jobs.Rows)
{
files.Add(crptToPDF(@"JobCost.rpt", …Run Code Online (Sandbox Code Playgroud) 我有一个地址电子表格,我需要计算他们所有邮政编码和我的邮政编码之间的距离.我对使用的方法相当灵活,但我希望有某种web服务或数学算法.仅美国地址.基本上我需要输入2个邮政编码并缩小它们之间的距离.
我愿意使用Excel公式或VBA,如果需要,我甚至可以用C#.net编写代码.
你会如何计算这些距离?
我正在使用BulkEditGridView控件,如http://roohit.com/site/showArc.php?shid=bbb62所述,它非常适合我的需求.我遇到的问题是每当我保存时,每个可见的行(我启用了分页)都会得到更新.单步执行代码,我看到grid.DirtyRows.Count等于单击保存按钮时每页的项数减1.
我找不到将行设置为脏的位置.我可以看看哪些建议?
我的代码隐藏只有这个:
using System;
using System.Web.UI.WebControls;
using System.Collections.Generic;
using System.Collections;
using System.Data.Common;
public partial class MSDS_MSDS_Admin_GridUpdate : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
gridMSDS.DataKeyNames = new String[] { "id" };
gridMSDS.DataBind();
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:这是aspx代码.
<%@ Page Language="C#" MasterPageFile="~/MSDS/MSDS.master" AutoEventWireup="true" EnableEventValidation="false" CodeFile="GridUpdate.aspx.cs" Inherits="MSDS_MSDS_Admin_GridUpdate" Title="Untitled Page" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<%@ Register Assembly="RealWorld.Grids" Namespace="RealWorld.Grids" TagPrefix="cc2" %>
<asp:Content ID="Content1" ContentPlaceHolderID="PageContent" runat="Server">
<br />
<asp:Button ID="btnSave" runat="server" Text="Save" Width="100%" />
<cc2:BulkEditGridView …Run Code Online (Sandbox Code Playgroud) 我修改了c#DataGridViews,以便我可以在它们之间拖放行.我需要弄清楚如何禁用某些行的拖动,或拒绝这些行的拖放.我正在使用的标准是数据行中的值.
我想禁用该行(灰色,不允许拖动)作为我的第一选择.
我有什么选择?如何根据条件禁用或拒绝拖放?
我正在尝试更改SQL Server 2000更新触发器,但它挂起并悬挂和挂起.为什么会发生这种情况,我该怎么做呢?这是一个很长的触发器,这可能是为什么?
触发代码很长,但缩写如下:
ALTER TRIGGER [dbo].[UP_AL_ItemUPCs] ON [dbo].[AL_ItemUPCs]
FOR UPDATE
AS
SET XACT_ABORT ON
Declare @vError varchar(254)
Declare @iUpdateCount int
Select @iUpdateCount = Count ( D.UPCID )
From deleted D
If @iUpdateCount > 1
Begin
Raiserror ( 'This Table maintains AVANTI data ... mass updates cannot be done, yet' , 16 , 1 )
Rollback
Goto Exit_
End
Declare @iUpdateCheck int
Declare @OldItemNumber varchar(50)
Declare @ItemNumber varchar(50)
Declare @OldItemPrefix varchar(5)
Declare @ItemPrefix varchar(5)
Declare @OldItemCode varchar(25)
Declare @ItemCode varchar(25) …Run Code Online (Sandbox Code Playgroud) 我正在运行一个返回小数的查询,然后将这些小数插入表变量.当我查询表变量时,我得到整数.任何人都可以看到为什么会发生这种情况以及如何纠正?使用Sql Server 2000.
DECLARE @Nov Table(custCode varchar(10), PromiseAvg decimal, ShipAvg decimal )
INSERT INTO @Nov
SELECT JM.CustomerCode
, isnull(AVG(Cast(DATEDIFF(dd, ISNULL(startDate, 0), ISNULL(PromiseDate, 0)) As Decimal)),0) As PromiseAvg
, isnull(AVG(Cast(DATEDIFF(dd, ISNULL(startDate, 0), ISNULL(BOL.ShipDate, 0)) As Decimal)),0) As ShipAvg
from jobitems JI
LEFT JOIN jobmaster JM ON JI.Job_Number = JM.JobNumber
LEFT JOIN dbo.NCL_BOLDetails BD ON JM.JobNumber = BD.JobNumber AND JI.Item_Code = BD.ItemNumber
INNER JOIN dbo.NCL_BOLs BOL ON BD.BOLID = BOL.BOLID
WHERE StartDate BETWEEN '20091101' AND '20091130'
Group By JM.CustomerCode, JM.CustLongName
Order By …Run Code Online (Sandbox Code Playgroud) 我想在我的SQL Server中存储几个下拉列表的内容.将它们存储在每个下拉列表中的一个表中,还是放在更大的表中更好?
我的大表将具有如下模式:
CREATE TABLE [dbo].[OptionTable](
[OptionID] [int] IDENTITY(1,1) NOT NULL,
[ListName] [varchar](100) NOT NULL,
[DisplayValue] [varchar](100) NOT NULL,
[Value] [varchar](100) NULL,
[OptionOrder] [tinyint] NULL,
[AssociatedDept] [int] NULL,
[Other2] [nchar](10) NULL,
[Other3] [nchar](10) NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
我会通过以下方式获取1个列表的内容:
Select [columns]
From OptionTable
WHERE ListName = 'nameOfList'
Run Code Online (Sandbox Code Playgroud)
那我怎么决定呢?我知道它会像这样工作,我只是不确定这是不是很好的做法?一种方式会更好吗?可读性怎么样?意见表示赞赏.
我有一个绑定到数据表的datagridview.列不是自动生成的,我在代码中创建它们.我希望我的用户能够添加和删除一行,所以我有AllowUserToAddRows = true,AllowUserToDeleteRows = true.
问题是:当他们选择一行并按DEL时,信息将被行单元格的默认值替换.这一行不会消失.
这是什么行为(为什么/发生了什么),我该如何解决这个问题?
这是我的网格创建代码:
private void resetDowntimeGrid()
{
downtimeEntries = new DataTable();
downtimeEntries.Columns.Add("Category", typeof(int));
downtimeEntries.Columns.Add("HoursDown");
downtimeEntries.Columns.Add("Reason");
//deptDowntimeCategories.Select("", "ListOrder ASC");
gridDowntime.Columns.Clear();
DataGridViewComboBoxColumn cboCategory = new DataGridViewComboBoxColumn();
{
cboCategory.HeaderText = "Category";
cboCategory.DataSource = deptDowntimeCategories;
cboCategory.DisplayMember = "Name";
cboCategory.ValueMember = "CategoryID";
cboCategory.DataPropertyName = "Category";
cboCategory.Width = Convert.ToInt16(gridDowntime.Width * 0.20);
cboCategory.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
cboCategory.AutoComplete = true;
gridDowntime.Columns.Add(cboCategory);
}
DataGridViewTextBoxColumn txtDowntime = new DataGridViewTextBoxColumn();
txtDowntime.HeaderText = "HoursDown";
txtDowntime.DataPropertyName = "HoursDown";
txtDowntime.Width = Convert.ToInt16(gridDowntime.Width * 0.15);
gridDowntime.Columns.Add(txtDowntime);
DataGridViewTextBoxColumn txtReason = new DataGridViewTextBoxColumn(); …Run Code Online (Sandbox Code Playgroud)