我有一个SharePoint Web部件(实际上只是一个"Hello World"应用程序),我刚刚创建并且部署它时遇到问题.我签署了.dll,创建了.dwp,并在web.config中将其注册为安全控件.我可以将它添加到Web部件库并为其添加详细信息; 但是,当我尝试将其添加到页面时,我收到以下错误:
无法显示或导入此页面上的Web部件或Web窗体控件.无法找到该类型或未注册为安全类型.
以下是我的.dwp文件:
<?xml version="1.0"?>
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
<Assembly>SimpleWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=################</Assembly>
<TypeName>MyWebParts.SimpleWebPart</TypeName>
<Title>My Simple Web Part</Title>
<Description>A simple Web Part</Description>
</WebPart>
Run Code Online (Sandbox Code Playgroud)
和我添加到web.config的条目:
<SafeControl Assembly="SimpleWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=################" Namespace="MyWebParts" TypeName="*" Safe="True" />
Run Code Online (Sandbox Code Playgroud)
我也尝试使用通配符作为命名空间,但没有帮助.我甚至尝试将web.config信任级别设置为"Full"(我不会在生产中做,但试图尝试缩小问题范围)并且仍然没有运气.有任何想法吗?谢谢.
我在C#中创建一个SharePoint Web部件,其中一部分将GridView控件输出到页面.虽然我可以通过设置GridView本身的CSS类来对其显示方式进行相当广泛的控制,但我真正想要做的是能够为某些特定的td元素指定类.我不知道该怎么做,或者在GridView填充行时,或者在GridView添加到页面时完成.
在伪代码中,我基本上设想的是能够说出类似的东西gridView.Row[4].CssClass = "header",它会将GridView中第五行的td设置为类"header".
我已经研究过使用RowDataBound事件,所以我只是使用以下方法来测试它:
protected void outputGrid1_RowDataBound(object sender, GridViewRowEventArgs e)
{
e.Row.CssClass = "outputHeader";
}
Run Code Online (Sandbox Code Playgroud)
这可能是我对如何正确使用它的误解,但它似乎没有做任何事情.我认为它会将所有行设置为类"header",如果有的话,我将从那里开始处理我的逻辑,但我甚至无法让它工作.感谢任何人都能提供的帮助!
我正在使用只包含char [32]的结构写入二进制文件.我基本上需要通过对字符串数组执行各种计算并连接结果来格式化每个数据块.我试图将std :: string复制到没有空终止的char数组.我读到的越多,我就越困惑.如果我做:
struct block{
char data[32];
};
block blocks[2048];
std::string buffer;
buffer = "12345678123456781234567812345678";
strcpy(blocks[0].data, buffer.c_str());
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,因为使用c_str()添加空终止符使字符串长度为33.如果我从字符串中减去一个字符,它可以工作,但后来我有空终结符,我不想要.我可以成功地做到以下几点:
strcpy(blocks[0].data, "12345678123456781234567812345678");
Run Code Online (Sandbox Code Playgroud)
但我想先构造字符串,因为它通常涉及连接各种数组的不同字符串.例如,我可以用std :: string来做到这一点:
std::string buffer = stringArray1[0] + stringArray2[0];
strcpy(blocks[0].data, buffer.c_str());
Run Code Online (Sandbox Code Playgroud)
但后来我再次使用null终止符.我只想复制std :: string中的字符而没有空终止符.
我使用的是VC++ 6.0.
我很难从使用ProcDump创建的崩溃转储中获取任何有意义的信息,但我很确定它与我一直看到的看似随机的崩溃有关.
我有一个在Windows 7 64位上运行的VB6应用程序.每隔一段时间,它就会崩溃,在错误日志中留下一个错误ntdll.dll的条目,但不提供更多信息.所以,我一直在运行SysInternals的ProcDump运行过程,为我自动创建故障转储.
我一直无法在内部重新制造崩溃,所以我很确定如果我有一个转储,它会告诉我问题是什么.但是,在运行一天的大部分时间之后,我看到ProcDump已经编写了几个转储,尽管该程序仍然正常运行.它似乎确实指向ntdll.dll的问题,但我不知道从哪里开始应用此修复程序.
!analyze -v在其中一个转储上运行会给我以下内容:
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
FAULTING_IP:
+0
00000000 ?? ???
EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 00000000
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 0
FAULTING_THREAD: 000007c8
PROCESS_NAME: application.exe
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.
EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
APP: application.exe
BUGCHECK_STR: APPLICATION_FAULT_STATUS_BREAKPOINT_AFTER_CALL
PRIMARY_PROBLEM_CLASS: STATUS_BREAKPOINT_AFTER_CALL
DEFAULT_BUCKET_ID: STATUS_BREAKPOINT_AFTER_CALL
LAST_CONTROL_TRANSFER: from 7754431f …Run Code Online (Sandbox Code Playgroud) 我有类似以下问题的情况:
我的场景不同的地方是我有一个非自动递增的主键字段,其范围可以在1000和1999之间.到目前为止我们只有大约一百个值,但是已经取得了最大值(1999) ,编号顺序也有差距.因此,我需要找到一个介于1000-1999之间但未采用的值.例如,如果我当前的值是,例如,1000,1001,1003和1999,我希望查询返回1002.
我有一个C#函数来翻转DataSet的方向:
static DataSet FlipDataSet(DataSet my_DataSet)
{
using (DataSet ds = new DataSet())
{
foreach (DataTable dt in my_DataSet.Tables)
{
DataTable table = new DataTable();
for (int i = 0; i <= dt.Rows.Count; i++)
{
table.Columns.Add(Convert.ToString(i));
}
DataRow r = null;
for (int k = 0; k < dt.Columns.Count; k++)
{
r = table.NewRow();
r[0] = dt.Columns[k].ToString();
for (int j = 1; j <= dt.Rows.Count; j++)
r[j] = dt.Rows[j - 1][k];
table.Rows.Add(r);
}
ds.Tables.Add(table);
table.Dispose();
}
return ds;
}
}
Run Code Online (Sandbox Code Playgroud)
我从在interwebs上找到的片段修改了这段代码,将创建的DataSet包装在using语句中,并显式处理它创建的IDisposable对象.我的问题是,在处理时,DataSet(上面代码中的"ds")在返回时会发生什么?我退回后无法在ds上显式调用.Dispose(),显然,.NET返回值然后正确处理它,或者我完全错过了什么?
我用Google搜索了这个问题,似乎无法找到一致的意见,或许多基于可靠数据的意见.我只想知道在SQL SELECT语句中使用通配符是否会产生额外的开销,而不是单独调用每个项目.我已经在几个不同的测试查询中比较了两者的执行计划,似乎估计总是读取相同的.是否有可能在其他地方产生一些开销,或者它们是否真的处理相同?
我具体指的是:
SELECT *
Run Code Online (Sandbox Code Playgroud)
与
SELECT item1, item2, etc.
Run Code Online (Sandbox Code Playgroud) 我知道这是DataGridView的基本功能,但由于某种原因,我无法让它工作.我只希望Windows窗体上的DataGridView在用户单击"保存"按钮时向数据库提交对其进行的任何更改.
我根据DropDownList中用户选择触发的函数填充DataGridView,如下所示:
using (SqlConnection con = new SqlConnection(conString))
{
con.Open();
SqlDataAdapter ruleTableDA = new SqlDataAdapter("SELECT rule.fldFluteType AS [Flute], rule.fldKnife AS [Knife], rule.fldScore AS [Score], rule.fldLowKnife AS [Low Knife], rule.fldMatrixScore AS [Matrix Score], rule.fldMatrix AS [Matrix] FROM dbo.tblRuleTypes rule WHERE rule.fldMachine_ID = '1003'", con);
DataSet ruleTableDS = new DataSet();
ruleTableDA.Fill(ruleTableDS);
RuleTable.DataSource = ruleTableDS.Tables[0];
}
Run Code Online (Sandbox Code Playgroud)
在我的保存功能中,我基本上有以下内容(我已经修剪了一些代码以便达到目的):
using (SqlDataAdapter ruleTableDA = new SqlDataAdapter("SELECT rule.fldFluteType AS [Flute], rule.fldKnife AS [Knife],
rule.fldScore AS [Score], rule.fldLowKnife AS [Low Knife],
rule.fldMatrixScore AS [Matrix Score], rule.fldMatrix AS [Matrix] …Run Code Online (Sandbox Code Playgroud) 我有一个我在C#中编写的SharePoint Web部件,用于根据用户选择显示SQL Server数据.我使用DataReader提取数据,用它填充DataSet,并将DataSet设置为GridView中的DataSource,并将该控件添加到我的页面:
GridView outputGrid = new GridView();
outputGrid.CssClass = "OutputGrid";
outputGrid.DataSource = flipped_ds1;
outputGrid.RowDataBound += outputGrid_RowDataBound;
outputGrid.DataBind();
Controls.Add(outputGrid);
Run Code Online (Sandbox Code Playgroud)
这给了我一个带有声明的CSS类的简单HTML表,就是它.我面临的唯一问题是数据字段中的换行符根本没有呈现.我只是得到一个文本块,忽略了数据库呈现为HTML时存在的中断.在单步执行代码时,我看到换行符以"\ r \n"的形式作为文本进入.我尝试了一个正则表达式:
Regex rgx = new Regex("\r\n");
string inputStr = Convert.ToString(dr[x]);
string outputStr = rgx.Replace(inputStr, "<br />");
newRow[ds3.Tables["Bobst Specs 3"].Columns[x]] = outputStr;
Run Code Online (Sandbox Code Playgroud)
虽然它确实检测并替换换行符,但我只是得到
没有换行符的文本" ".在查看HTML源代码时,它会在我指定"
"的位置插入以下行:
<br />
Run Code Online (Sandbox Code Playgroud)
我还尝试将我的SQL查询更改为以下内容:
SELECT REPLACE (fldCustomerName, '. ', '.' + @NewLineChar)
Run Code Online (Sandbox Code Playgroud)
这显然会带来更多新的线条.我可以看到它们存在,因为如果我也插入正则表达式它们会受到影响,但不会创建换行符.我不知道如何更换这些,以及如何更换线条来实际打破.
我有使用C#编写的Winform应用程序.在我的表单上,我有一个带有七个页面的TabControl,每个页面都有元素(主要是TextBoxes和DropDownLists).我使用DataReader提取一些信息,填充DataTable,并使用元素的DataBindings.Add方法用当前值填充这些元素.
用户可以在这些元素中输入数据,按"保存",然后使用元素的文本字段设置UPDATE查询的参数.例如:
updateCommand.Parameters.Add("@CustomerName", SqlDbType.VarChar, 100).Value = CustomerName.Text;
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,一旦我加载表单,所有元素显然都是空的,直到我手动选择每个选项卡.因此,如果我在加载表单时立即按"保存",我尚未选择的TabPages上的所有字段都尝试使用空数据更新(不好).当我选择每个TabPage时,这些元素现在将正确地发送它们的数据.目前,我已经制定了一个(非常)丑陋的解决方法,我在第一次填充数据时以编程方式选择每个TabPage,但这是一个不可接受的长期解决方案.
我的问题是,在用户选择TabPage之前,如何让TabPages上的所有元素正确返回数据?
c# ×4
sql ×3
.net ×2
asp.net ×2
gridview ×2
winforms ×2
arrays ×1
c++ ×1
crash-dumps ×1
css ×1
datagridview ×1
dataset ×1
html ×1
idisposable ×1
overhead ×1
performance ×1
procdump ×1
return ×1
safecontrols ×1
sharepoint ×1
sql-server ×1
stdstring ×1
strcpy ×1
tabcontrol ×1
tabpage ×1
vb6 ×1
web-config ×1
web-parts ×1
wildcard ×1
windbg ×1
windows-7 ×1