所以,我想在 C 列和 K 列之间“串扰”位于 D< /strong>(包含来自网络的各种链接 = D5)。
整个工作表分为两部分(见图):
如果我为C5中的项目选择“完成”(3.免疫学→1.转基因动物→2.生物技术和应用Zoology),我想在 K16 中选择 “完成”。 反之亦然。我希望所有项目都发生这种情况。 查看图片:3. C5→K16 & 4. K16→C5
此外,我将 Google Apps 脚本用于多行相关下拉列表 -
//Sheet = 'Link Database' - Creating suitable dependant Dropdown
function onEdit(){
//this line refers to the current active sheet
var start = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//this 'current' variable captures the currently selected cell in the active spreadsheet
var current = start.getActiveCell();
//var to refer to the worksheet
var topicDatabase = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Topic Database");
var linkDatabase = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Link Database");
//has the user selected a subject?
if (current.getColumn()==5)
{
//to copy the selcted subject
var coiceSubject = current.getValue()
topicDatabase.getRange("P2").setValue(coiceSubject)
//clear any validation
linkDatabase.getRange("F5:F").clearDataValidations();
//create the rule
var point = current.offset(0,1)
var items = topicDatabase.getRange("N2:N")
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(items).build();
//clear content
point.clearContent();
point.setDataValidation(rule)
}
//has the user selected a topic?
if(current.getColumn()==6)
{
//to copy the selected topic
var choiceTopic = current.getValue()
topicDatabase.getRange("Q2").setValue(choiceTopic)
//clear any validation
linkDatabase.getRange("G5:G").clearDataValidations();
//create the rule
var point2 = current.offset(0,1)
var items2 = topicDatabase.getRange("O2:O")
var rule2 = SpreadsheetApp.newDataValidation().requireValueInRange(items2).build();
point2.clearContent();
point2.setDataValidation(rule2)
}
//if subject is blank - clear content & validation in topic and sub topic
if(linkDatabase.getRange("E5:E").isBlank()==true){
//clear validaton on the same range
linkDatabase.getRange("F5:F").clearDataValidations();
linkDatabase.getRange("G5:G").clearDataValidations();
linkDatabase.getRange("F5:F").clearContent()
linkDatabase.getRange("G5:G").clearContent()
}
else if(linkDatabase.getRange("F5:F").isBlank()==true){
linkDatabase.getRange("G5:G").clearDataValidations();
linkDatabase.getRange("G5:G").clearContent()
}
}
谷歌表的链接 [更新已解决的答案]:https://docs.google.com/spreadsheets/d/1-Oz4F02UnHrf9x_tBZLNU2BK5aMUHdfFgKnhjANMeTI/copy
答案 0 :(得分:0)
@using Microsoft.AspNetCore.Identity
@inject SignInManager<User> signInManager
<ul class="navbar-nav">
@if (signInManager.IsSignedIn(User))
{
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Manage" asp-action="Index" title="Manage">Hello @User.Identity.Name!</a>
</li>
<li class="nav-item">
<form class="form-inline" asp-area="" asp-controller="Account" asp-action="Logout" method="post">
<button type="submit" class="nav-link btn btn-link text-dark">Logout</button>
</form>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Account" asp- action="Register">Register </a>
</li>
<li>
<a class="nav-link text-dark" asp-area="" asp-controller="Account" asp-action="Login">Log in</a>
</li>
}
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Admin" asp-action="List">Admin</a>
</li>
</div>
</div>
</nav>
@model RegisterViewModel
@{
ViewBag.Title = "Register";
}
<h2>Register</h2>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<form method="post" asp-action="Register">
<div class="form-group row">
<div class="col-sm-2"><label>Username:</label></div>
<div class="col-sm-4">
<input type="text" asp-for="Username"
class="form-control" />
</div>
<div class="col">
<span asp-validation-for="Username"
class="text-danger"></span>
</div>
</div>
<div class="form-group row">
<div class="col-sm-2"><label>Password:</label></div>
<div class="col-sm-4">
<input type="password" asp-for="Password"
class="form-control" />
</div>
<div class="col">
<span asp-validation-for="Password"
class="text-danger"></span>
</div>
</div>
<div class="form-group row">
<div class="col-sm-2"><label>Confirm Password:</label></div>
<div class="col-sm-4">
<input type="password" asp-for="ConfirmPassword"
class="form-control" />
</div>
</div>
<div class="row">
<div class="offset-2 col-sm-4">
<button type="submit" class="btn btn-primary">Register</button>
</div>
</div>
<div class="row">
<div class="offset-2 col-sm-4">
Already registered? <a asp-action="LogIn">Log In</a>
</div>
</div>
</form>
中的过滤条件发生变化时,处理 @model LoginViewModel
@{
ViewBag.Title = "Login";
}
<h2>Login</h2>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<form method="post" asp-action="LogIn" asp-route-returnUrl="@Model.ReturnUrl">
<div class="form-group row">
<div class="col-sm-2"><label>Username:</label></div>
<div class="col-sm-4">
<input type="text" asp-for="Username"
class="form-control" />
</div>
<div class="col">
<span asp-validation-for="Username"
class="text-danger"></span>
</div>
</div>
<div class="form-group row">
<div class="col-sm-2"><label>Password:</label></div>
<div class="col-sm-4">
<input type="password" asp-for="Password"
class="form-control" />
</div>
<div class="col">
<span asp-validation-for="Password"
class="text-danger"></span>
</div>
</div>
<div class="form-group row">
<div class="offset-sm-2 col-sm-4">
<input type="checkbox" title="Remember Me" asp-for="RememberMe"
class="form-check-inline" />
<label asp-for="RememberMe">Remember Me</label>
</div>
</div>
<div class="row">
<div class="offset-2 col-sm-4">
<button type="submit" class="btn btn-primary">Log In</button>
</div>
</div>
<div class="row">
<div class="offset-2 col-sm-4">
Not registered? <a asp-action="Register">Register as a new user</a>
</div>
</div>
</form>
列中状态的更新。//Sheet = Link Database - Creating suitable dependant Dropdown
function onEdit(e){
// YOUR ORIGINAL CODE HERE..... //
if(start.getName() == "Link Database" ){
//Get list of filtered links in B5:B
var filteredLinks = linkDatabase.getRange("B5:B").getDisplayValues().flat().filter(String);
//Get all links in D5:D
var allLinks = linkDatabase.getRange("D5:D").getDisplayValues().flat().filter(String);
Logger.log(filteredLinks)
Logger.log(allLinks)
//Check if filter criteria was updated, update column C based on column K value
if(current.getColumn()==2 && current.getRow() >= 2 && current.getRow() <= 4){
//Clear content of C5:C
linkDatabase.getRange("C5:C").clearContent();
//Update status of each filtered links
filteredLinks.forEach((link,index) => {
var idx = allLinks.indexOf(link);
if(idx > -1){
//Get status value in column K
var status = linkDatabase.getRange(5+idx,11).getDisplayValue();
//Set status value in column C
linkDatabase.getRange(5+index,3).setValue(status);
}
});
}
//Get the rows being updated using the event object 'e'
Logger.log(JSON.stringify(e));
var rowStart = e.range.rowStart;
var rowCnt = e.range.rowEnd - rowStart;
//Loop each row
for(var i = 0; i <= rowCnt; i++){
var currentRow = rowStart + i;
Logger.log(currentRow);
//Check if status in column C5:C was updated. Update status in column K
if(current.getColumn()==3 && currentRow >= 5){
var status = linkDatabase.getRange(currentRow,current.getColumn()).getDisplayValue();
Logger.log(status);
//Get matching filtered link
var index = currentRow - 5;
//Get the filtered link index in allLink array
var idx = allLinks.indexOf(filteredLinks[index]);
Logger.log(idx);
if(idx > -1){
//link found. Set status in column K
linkDatabase.getRange(5+idx,11).setValue(status);
}else{
//revert modification
current.clearContent();
}
}
//Check if status in column K5:K was updated. Update status in column C
if(current.getColumn()==11 && currentRow >= 5){
var status = linkDatabase.getRange(currentRow,current.getColumn()).getDisplayValue();
Logger.log(status);
//Get matching link
var idx = currentRow - 5;
//Get the filtered link index in allLink array
var index = filteredLinks.indexOf(allLinks[idx]);
Logger.log(index);
if(index > -1){
//link found. Set status in column K
linkDatabase.getRange(5+index,3).setValue(status);
}
}
}
}
}
列中的状态发生更改时,处理 C5:C
列中状态的更新。B2, B3, B4
列中的状态发生更改时,处理 K5:K
列中状态的更新。为了获得被修改的行数,我使用了 onEdit event object C5:C
。然后逐行循环每一行以更新列 C 或 K 的状态。
请注意,如果您使用编辑器手动运行脚本,您将遇到错误对象 C5:C
未定义。这是因为事件对象仅在您修改/编辑工作表中的单元格时才存在。要调试代码,我需要编辑工作表中的单元格/单元格范围,然后检查执行选项卡下的日志。