我有一个有六行的表,但是只有两行可见(一个标题行和一个"业务"行)。
用户可以选择一个按钮,一次添加一个额外的行(实际上,它只是使现有行可见),最多总共六行/五行" business"行。
第2-6行首先被这个代码隐藏变得不可见:
foapalrow3.Style["display"] = "none";
(与foapalrow4,foapalrow5和foapalrow6的代码相同)。
然后,当用户选择" +"然后通过jQuery使它们可见。按钮:/* This makes the next hidden row visible, as long as there is one */
$(document).on("click", '[id$=btnAddFoapalRow]', function (e) {
$('[id$=foapalhtmltable]').find('tr:hidden:first').show();
});
这很好用。问题是,当提交表单时,先前可见的行将恢复为隐藏(除前两个之外的所有行)。我试图添加将重新显示这些行的代码,如果其中的任何文本输入都被赋予了值。 IOW,如果我给"索引"列中每行的值如下:
....我希望他们再次可见,因为他们做有一个值:
......他们的可见财产确实是真实的":
......但行仍然顽固,藏在洞穴里。这是背后的代码:
private void btnSave_Click(object sender, EventArgs e)
{
try
{
. . . // code elided for brevity
ConditionallyCreateList();
SaveInputToList();
listOfListItems = ReadFromList();
message.Text = "Saving the data has been successful";
// Expose any rows with vals
if (RowContainsVals(3))
{
foapalrow3.Visible = true;
}
if (RowContainsVals(4))
{
foapalrow4.Visible = true;
}
if (RowContainsVals(5))
{
foapalrow5.Visible = true;
}
if (RowContainsVals(6))
{
foapalrow6.Visible = true;
}
. . . // code elided for brevity
}
catch (Exception ex)
{
message.Text = String.Format("Exception occurred: {0}", ex.Message);
}
}
private bool RowContainsVals(int rownum)
{
bool rowdirty = false;
switch (rownum)
{
case 3:
rowdirty = ((!String.IsNullOrEmpty(boxFund2.Text)) ||
(!String.IsNullOrEmpty(boxIndex2.Text)) ||
(!String.IsNullOrEmpty(boxOrganization2.Text)) ||
(!String.IsNullOrEmpty(boxAccount2.Text)) ||
(!String.IsNullOrEmpty(boxActivity2.Text)) ||
(!String.IsNullOrEmpty(boxAmount2.Text)));
break;
case 4:
rowdirty = ((!String.IsNullOrEmpty(boxFund3.Text)) ||
(!String.IsNullOrEmpty(boxIndex3.Text)) ||
(!String.IsNullOrEmpty(boxOrganization3.Text)) ||
(!String.IsNullOrEmpty(boxAccount3.Text)) ||
(!String.IsNullOrEmpty(boxActivity3.Text)) ||
(!String.IsNullOrEmpty(boxAmount3.Text)));
break;
case 5:
rowdirty = ((!String.IsNullOrEmpty(boxFund4.Text)) ||
(!String.IsNullOrEmpty(boxIndex4.Text)) ||
(!String.IsNullOrEmpty(boxOrganization4.Text)) ||
(!String.IsNullOrEmpty(boxAccount4.Text)) ||
(!String.IsNullOrEmpty(boxActivity4.Text)) ||
(!String.IsNullOrEmpty(boxAmount4.Text)));
break;
case 6:
rowdirty = ((!String.IsNullOrEmpty(boxFund5.Text)) ||
(!String.IsNullOrEmpty(boxIndex5.Text)) ||
(!String.IsNullOrEmpty(boxOrganization5.Text)) ||
(!String.IsNullOrEmpty(boxAccount5.Text)) ||
(!String.IsNullOrEmpty(boxActivity5.Text)) ||
(!String.IsNullOrEmpty(boxAmount5.Text)));
break;
default:
rowdirty = false;
break;
}
return rowdirty;
}
但是,这是我在代码运行后看到的全部内容:
那么为什么将visible属性设置为可见而不确实将它们设置为可见?
注意:如果我通过" +"重新展开行。按钮,他们做包含我添加到他们的值。所以行存活并保留他们的数据,他们只是不想展示自己......
答案 0 :(得分:1)
尝试更改代码以使用Style["display"] = "table-row";
代替Visible = true;
你说通过设置样式display:none.
请注意,在asp.net中创建一个control.Visible 与使用样式隐藏不一样。
Control.Visible = false
不会在客户端呈现HTML代码,而设置display:none
会使用在浏览器上隐藏该行的样式呈现它。我假设这是你的情况,因为你说你隐藏并在客户端显示行,为了做到这一点,他们必须存在于客户端,所以我假设你的代码中没有Visible = false;
< / p>
答案 1 :(得分:0)
更改我的代码:
// Expose any rows with vals
if (RowContainsVals(3))
{
foapalrow3.Visible = true;
}
if (RowContainsVals(4))
{
foapalrow4.Visible = true;
}
if (RowContainsVals(5))
{
foapalrow5.Visible = true;
}
if (RowContainsVals(6))
{
foapalrow6.Visible = true;
}
......对此:
// Re-visiblize any rows that contain vals
if (RowContainsVals(3))
{
foapalrow3.Style["display"] = "table-row";
}
if (RowContainsVals(4))
{
foapalrow4.Style["display"] = "table-row";
}
if (RowContainsVals(5))
{
foapalrow5.Style["display"] = "table-row";
}
if (RowContainsVals(6))
{
foapalrow6.Style["display"] = "table-row";
}
...作品。